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