簡體   English   中英

Magento 2 Rest API,PUT目錄請求不起作用

[英]Magento 2 Rest API, PUT catalog request doesn't work

我正在使用Symfony應用程序將請求發送到Magento 2 Rest Api。 當我發送PUT請求更新目錄時,它不會更改Magento中的目錄信息,而是會更改名稱和Symfony端的除parentId以外的其他參數。

這是帶有請求的代碼:

public function updateCategory($id, $name, $parentId, $isActive = true)
{
    $pageSuffix = "rest/V1/categories/" . $id;
    $headers = ['content-type' => "application/json", 'Authorization' => "Bearer " . $this->adminToken];
    $content = ["category" => ["id" => (int)$id, "name" => $name, "parentId" => (int)$parentId, "isActive" => (bool)$isActive]];
    $response = $this->buzz->put($this->urlBase . $pageSuffix, $headers, json_encode($content));
    print_r(json_decode($response));
    print_r($this->buzz->getLastRequest());
} 

我發送請求之前的類別樹:

[id] => 1
[parent_id] => 0
[name] => Root Catalog
[is_active] => 
[position] => 0
[level] => 0
[product_count] => 0
[children_data] => Array
    (
        [0] => stdClass Object
            (
                [id] => 2
                [parent_id] => 1
                [name] => root_test_category_1
                [is_active] => 1
                [position] => 1
                [level] => 1
                [product_count] => 0
                [children_data] => Array
                    (
                        [0] => stdClass Object
                            (
                                [id] => 3
                                [parent_id] => 2
                                [name] => test_category_1
                                [is_active] => 1
                                [position] => 1
                                [level] => 2
                                [product_count] => 0
                                [children_data] => Array
                                    (
                                        [0] => stdClass Object
                                            (
                                                [id] => 8
                                                [parent_id] => 3
                                                [name] => test_category_1_1
                                                [is_active] => 1
                                                [position] => 1
                                                [level] => 3
                                                [product_count] => 0
                                                [children_data] => Array
                                                    (
                                                        [0] => stdClass Object
                                                            (
                                                                [id] => 9
                                                                [parent_id] => 8
                                                                [name] => test_category_1_1_1
                                                                [is_active] => 1
                                                                [position] => 1
                                                                [level] => 4
                                                                [product_count] => 0
                                                                [children_data] => Array
                                                                    (
                                                                    )

                                                            )

                                                        [1] => stdClass Object
                                                            (
                                                                [id] => 10
                                                                [parent_id] => 8
                                                                [name] => test_category_1_1_2
                                                                [is_active] => 1
                                                                [position] => 2
                                                                [level] => 4
                                                                [product_count] => 0
                                                                [children_data] => Array
                                                                    (
                                                                    )

                                                            )

                                                        [2] => stdClass Object
                                                            (
                                                                [id] => 16
                                                                [parent_id] => 8
                                                                [name] => test_category_1_1_3
                                                                [is_active] => 1
                                                                [position] => 3
                                                                [level] => 4
                                                                [product_count] => 0
                                                                [children_data] => Array
                                                                    (
                                                                    )

                                                            )

                                                    )

                                            )

                                    )

                            )

                    )

            )

        [1] => stdClass Object
            (
                [id] => 5
                [parent_id] => 1
                [name] => root_test_category_2
                [is_active] => 1
                [position] => 2
                [level] => 1
                [product_count] => 0
                [children_data] => Array
                    (
                        [0] => stdClass Object
                            (
                                [id] => 6
                                [parent_id] => 5
                                [name] => test_category_2_1
                                [is_active] => 1
                                [position] => 1
                                [level] => 2
                                [product_count] => 0
                                [children_data] => Array
                                    (
                                    )

                            )

                    )

            )

    )

然后,我發送一個請求以更改test_category_1_1_3,id16。下面的命令發送的參數與上面列出的updateCategory()函數相同。 因此,它應該獲取ID為16的目錄,並更改其名稱和parentId。

app/console magento:test 16 test_category_1_1_3_test 6 1 -vvv

運行命令並發送請求后,我通過從Magento Rest API獲取此目錄來進行檢查。 結果,它更改了名稱,但其他所有內容保持不變。

[id] => 16
[parent_id] => 8
[name] => test_category_1_1_3_test
[is_active] => 1
[position] => 3
[level] => 4
[product_count] => 0
[children_data] => Array
    (
    )

請求的回復:

Buzz\Message\Response Object
(
    [protocolVersion:Buzz\Message\Response:private] => 
    [statusCode:Buzz\Message\Response:private] => 
    [reasonPhrase:Buzz\Message\Response:private] => 
    [headers:Buzz\Message\AbstractMessage:private] => Array
        (
            [0] => HTTP/1.1 200 OK
            [1] => Date: Wed, 17 May 2017 12:56:23 GMT
            [2] => Server: Apache/2.4.18 (Ubuntu)
            [3] => Set-Cookie: PHPSESSID=56hrlb8nejsnrduk05npemd3n3; expires=Wed, 17-May-2017 13:56:23 GMT; Max-Age=3600; path=/; domain=magento-project.nikolay.localdev; HttpOnly
            [4] => Expires: Thu, 19 Nov 1981 08:52:00 GMT
            [5] => Cache-Control: no-store, no-cache, must-revalidate
            [6] => Pragma: no-cache
            [7] => X-Frame-Options: SAMEORIGIN
            [8] => Content-Length: 739
            [9] => Content-Type: application/json; charset=utf-8
        )

    [content:Buzz\Message\AbstractMessage:private] => {"id":16,"parent_id":8,"name":"test_category_1_1_3_test","is_active":true,"position":3,"level":4,"children":"","created_at":"2017-05-17 10:51:17","updated_at":"2017-05-17 10:51:17","path":"1\/2\/3\/8\/16","available_sort_by":[],"include_in_menu":true,"custom_attributes":[{"attribute_code":"display_mode","value":"PRODUCTS"},{"attribute_code":"is_anchor","value":"1"},{"attribute_code":"path","value":"1\/2\/3\/8\/16"},{"attribute_code":"children_count","value":"0"},{"attribute_code":"custom_use_parent_settings","value":"0"},{"attribute_code":"custom_apply_to_products","value":"0"},{"attribute_code":"url_key","value":"test-category-1-1-3"},{"attribute_code":"url_path","value":"test-category\/test-category-1-1\/test-category-1-1-3"}]}
)
Buzz\Message\Request Object
(
    [method:Buzz\Message\Request:private] => PUT
    [resource:Buzz\Message\Request:private] => /rest/V1/categories/16
    [host:Buzz\Message\Request:private] => http://magento-project.nikolay.localdev
    [protocolVersion:Buzz\Message\Request:private] => 1.1
    [headers:Buzz\Message\AbstractMessage:private] => Array
        (
            [0] => content-type: application/json
            [1] => Authorization: Bearer mcq2i97t0t3b15hdmwwhoolp6ma0lyuy
        )

    [content:Buzz\Message\AbstractMessage:private] => {"category":{"id":16,"name":"test_category_1_1_3_test","parentId":6,"isActive":true}}
)

而且,Magento本身沒有任何變化。

Magento的屏幕截圖

我嘗試在(vendor / magento / module-catalog / Model / CategoryRepository.php)中調試save()函數,但沒有顯示任何有用的信息。 我一直在嘗試清除Magento和Symfony方面的緩存,但這也無濟於事。

被確認為錯誤。 可能與Magento 2中的商店范圍有關。

https://github.com/magento/magento2/issues/9949

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM