Magento 2.2 - 无法更新属性值

时间:2018-02-26 13:52:58

标签: magento attributes magento2 magento2.2

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

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

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

这是我传给"products/attributes/my_attr"

的json
    {"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会将默认视图商店标签的值重置为空,并将“在分层导航中使用”重置为“否”。任何尝试都是陌生人。

编辑3 似乎最可能的问题可能是由这些下拉属性中的重复值引起的,但我小心地从

中删除了所有这些
eav_attribute_option
eav_attribute_option_value
db中的

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

1 个答案:

答案 0 :(得分:0)

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

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

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

的值
max_input_vars=100000

但默认情况下只有1000.

有人建议其他参数,但这实际上是最常用的。 剩下的问题是,我仍然没有找到合适的值来让我的属性有很多选项来工作。