2017-05-17 2 views
1

Ich verwende Symfony-Anwendung, um Anfragen an Magento 2 Rest API zu senden. Wenn ich eine PUT-Anforderung zum Aktualisieren eines Katalogs sende, ändert sie keine Kataloginformationen in Magento, sondern ändert den Namen und andere Parameter außer parentId auf der Symfony-Seite. HierMagento 2 Rest API, PUT Kataloganforderung funktioniert nicht

ist der Code mit Anfrage:

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()); 
} 

Kategoriebaum, bevor ich eine Anfrage senden:

[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 
            (
            ) 

          ) 

        ) 

      ) 

    ) 

Dann sende ich eine Anfrage test_category_1_1_3 zu ändern, id 16. Der folgende Befehl sendet Parameter wie in der oben aufgeführten Funktion updateCategory(). Also sollte es Katalog mit ID 16 holen und seinen Namen und parentId ändern.

Nachdem ich den Befehl und die Sendeanforderung ausgeführt habe, überprüfe ich diesen Katalog, indem ich ihn von der Magento Rest API hole. Als Ergebnis ändert es seinen Namen, aber alles andere bleibt gleich.

[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 
    (
    ) 

Antwort der Anfrage:

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}} 
) 

Darüber hinaus nichts an allen Veränderungen in Magento selbst.

screenshot from Magento

Ich habe versucht, save() Funktion in (Verkäufer/magento/Modul-Katalog/Model/CategoryRepository.php) zu debuggen, aber es hat mir nichts zu zeigen, die helfen würde. Ich habe versucht, Cache auf Magento und Symfony Seiten zu löschen, aber das hilft auch nicht.

Antwort

Verwandte Themen