2017-05-17 12 views
1

Symfonyアプリケーションを使用してMagento 2 Rest APIにリクエストを送信しています。 PUTリクエストを送信してカタログを更新すると、Magentoのカタログ情報は変更されませんが、Symfony側でparentId以外の名前やその他のパラメータが変更されます。私はリクエストを送信する前にMagento 2 Rest API、PUTカタログ要求が機能しません

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を変更する要求を送信し、ID 16.以下のコマンドは、パラメータを送信します上記の関数updateCategory()と同様です。したがって、ID 16のカタログを取り出し、その名前と親ディレクトリを変更する必要があります。

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の自体内のすべての変更で何もありません。

screenshot from Magento

私は(ベンダー/ Magentoの/モジュールカタログ/モデル/ CategoryRepository.php)で()セーブ機能をデバッグしようとしたが、それは私に役立つだろう、何も表示されませんでした。私はMagentoとSymfonyの両サイドでキャッシュをクリアしようとしていましたが、それはうまくいきません。

答えて

関連する問題