Magento 2 rest API: создайте и сопоставьте значение параметра «Выбрать атрибут» для производителя с продуктом

#php #magento #magento2 #rest

Вопрос:

Я использую вызов rest «/все/V1/продукты» для создания продукта в Magento 2. Я использую этот код для создания всех настроек следующим образом:

      $data = [
            "product" => [
                "sku" => $sku,
                "name" => $name,
                "attribute_set_id" => 4,
                "price" => $price,
                "status" => 1,
                "visibility" => 4,
                "type_id" => "simple",
                "weight" => "1",
                "extension_attributes" => [
                    "category_links" => [
                        [
                            "position" => 0,
                            "category_id" => $cat_id
                        ]
                    ],
                    "stock_item" => [
                        "qty" => $qty,
                        "is_in_stock" => true
                    ]
                ],
                "custom_attributes" => [
                    [
                        "attribute_code" => "special_price",
                        "value" => $sale_price
                    ],
                    [
                        "attribute_code" => "special_from_date",
                        "value" => "2021-02-07 00:00:00"
                    ],
                    [
                        "attribute_code" => "special_to_date",
                        "value" => "2091-02-07 00:00:00"
                    ],
                    [
                        "attribute_code" => "cost",
                        "value" => $sale_price
                    ],
                    [
                        "attribute_code" => "description",
                        "value" => $desc
                    ],
                    [
                        "attribute_code" => "short_description",
                        "value" => $short_desc
                    ],
                    [
                        "attribute_code" => "manufacturer",
                        "value" => $brand
                    ],
                ]
            ]
        ];

 

Я использую этот код для создания и привязки продукта к пользовательскому производителю

 [
  "attribute_code" => "manufacturer",
  "value" => $brand
 ],
 

но я получаю эту ошибку: Ошибка произошла во время обработки «custom_attributes». Атрибут «Производитель» имеет недопустимое значение. Тип значения «Фирменное наименование» недопустим.

Атрибут производителя был создан введите описание изображения здесь

Ответ №1:

manufacturer Атрибут в Magento является атрибутом выбора. Вы не можете отправить только раскрывающееся значение, но должны отправить идентификатор параметра значения.

Таким образом, вызов конечной rest/all/V1/products точки со следующей полезной нагрузкой будет работать:

 {
  "product": {
    "sku": "sku12345678",
    "name": "Name of product",
    "attribute_set_id": 1,
    "price": 9.95,
    "status": 1,
    "visibility": 4,
    "type_id": "simple",
    "weight": "100",
    "custom_attributes": [
      {
        "attribute_code": "manufacturer",
        "value": "123"
      }
    ]
  }
}
 

Где 123 находится идентификатор опции.

Чтобы получить значения параметров с идентификаторами параметров атрибута производителя, вы можете выполнить запрос GET к конечной rest/all/V1/products/attributes/manufacturer/options точке .

Вы можете добавить опцию выбора, используя запрос POST на конечную rest/all/V1/products/attributes/manufacture/options точку со следующей полезной нагрузкой:

 {
  "option": {
    "label": "ManufacturerX",
    "value": "ManufacturerX",
    "sort_order": 100
  }
}