0

我已经使用 REST API 创建了一些自定义产品属性,正确填充它们并为产品分配值。

在开发环境中一切正常,而在登台环境中我遇到了困难,即使值和设置相同,即使在数据库中也是如此。例如,如果我想从后端更新现有属性中“is_filterable”选项的值,Magento 说它正确保存了属性,但实际上没有进行任何更改。

我尝试使用正确值对 REST API 进行 PUT 调用来更新,但我只能更新属性标签,

这是我要传递给的 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 和 scope 的值。

    {"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 版本中修复,实际上其他属性工作正常。

有什么线索吗?

编辑 在调用中使用一组不同的参数,我设法更改了属性值,但后端仍然没有运气。

这是更新的请求(数组版本)

$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

在数据库中,但实际上只删除选项,也可以从后端工作,而新选项的创建不起作用

4

1 回答 1

0

这不是一个确定的解决方案,为此我将创建一个新问题,希望有人能够回答,但我想至少发布真正的问题是什么。

实际上,我观察到一切正常,直到有一定数量的选项,然后,无论值是什么,它都停止工作。实际上我在开发环境中也遇到过,限制更高,但是对于具有超过 1300 个选项的属性,没有任何效果。

所以环顾四周,我发现这是一个 php 内存问题,你必须增加

max_input_vars=100000

而默认情况下只有 1000。

有人还建议其他参数,但这实际上是最常用的。仍然存在的问题是,我仍然没有找到让我的属性具有许多选项的良好价值,以发挥作用。

于 2018-02-27T17:12:53.210 回答