Я создал некоторые пользовательские атрибуты продукта с помощью REST API, правильно заполнил их и присвоил продуктам значения.
В среде разработки все работает нормально, тогда как в тестовой среде у меня возникли трудности, хотя значения и настройки одинаковы, даже в БД. Если, например, я хочу обновить значение параметра «is_filterable» в существующем атрибуте из бэкэнда, Magento говорит, что атрибут сохранен правильно, но на самом деле никаких изменений не производится.
Я пытался обновить с помощью вызова PUT REST API с правильными значениями, но я могу обновить только метки атрибутов,
Это json, который я передаю "products/attributes/my_attr"
{"attribute":{"attribute_code":"my_attr","attribute_id":174,"scope":"Global","default_frontend_label":"my_attr","frontend_labels":
[{"store_id":1,"label":"my_attr"}],"frontend_input":"select","is_searchable":true,
"is_visible_in_advanced_search":true,"is_comparable":true,"is_filterable":true}}
И это ответ Json, где вы можете видеть, что он полностью игнорирует значения для is_filterable и области действия.
{"is_wysiwyg_enabled":false,"is_html_allowed_on_front":false,"used_for_sort_by":
true,"is_filterable":false,"is_filterable_in_search":false,"is_used_in_grid":
true,"is_visible_in_grid":true,"is_filterable_in_grid":true,"position":0,
"apply_to"[], "is_searchable":"0","is_visible_in_advanced_search":"0",
"is_comparable":"0","is_used_for_promo_rules":"0","is_visible_on_front":"0",
"used_in_product_listing":"0","is_visible":true,"scope":"global",
"attribute_id":174,"attribute_code":"taglia","frontend_input":"select",
"entity_type_id":"4","is_required":false,"....
Очевидно, я постоянно переиндексировал и очищал кеши.
Единственный способ, которым мне удалось изменить эти значения, - это непосредственно из БД. Я собираюсь попробовать с расширением, но я не уверен, что получится.
Я видел, что была проблема, которая должна была быть исправлена в более старых версиях Magento, и на самом деле другие атрибуты работают нормально.
Любая подсказка?
EDIT С другим набором параметров в вызове мне удалось изменить значения атрибутов, но со стороны бэкэнда все равно не повезло.
Это обновленный запрос (версия массива)
$data = [
"attribute" => [
"attribute_code" => $my_opt,
"attribute_id" => 173,
"entity_type_id" => 4,
"scope" => "global",
"default_frontend_label" => $my_opt,
"frontend_labels" => [
["store_id" => 1,
"label" => $my_opt ]
],
"frontend_input" => "select",
"is_wysiwyg_enabled" => true,
"is_html_allowed_on_front" => true,
"used_for_sort_by" => true,
"is_filterable" => true,
"is_filterable_in_search" => true,
"is_used_in_grid" => true,
"is_visible_in_grid" => true,
"is_filterable_in_grid" => true,
"position" => 1,
"is_searchable" => true,
"is_visible_in_advanced_search" => true,
"is_comparable" => true,
"is_used_for_promo_rules" => true,
"is_visible_on_front" => true,
"used_in_product_listing" => true,
"is_visible" => true
]
];
EDIT2: Более того, если я попытаюсь обновить некоторую информацию из бэкэнда, Magento сбрасывает значения метки хранилища представления по умолчанию на пустое, а «использовать в многоуровневой навигации» на «Нет». Незнакомец при любой попытке.
EDIT 3 кажется, что наиболее вероятная проблема может быть вызвана дублированием значений в этих раскрывающихся атрибутах, но я тщательно удалил их все из
eav_attribute_option
eav_attribute_option_value
в БД, но на самом деле только удаление параметров, работает и из бэкэнда, тогда как создание новых параметров не работает