Magento - 无法删除产品管理员中的多个选定值

时间:2012-02-10 10:59:51

标签: magento admin multiple-select

我创建了一个带有一些值的新属性(多选),一切正常,但是当我想删除产品的所有选定值时,我收到消息“产品属性已保存”。但值仍然被选中。

注意:

  • 我在保存之前按Ctrl + Click取消选择最后一个值。
  • 我将属性的参数值必需设置为
  • 如果我保存的产品尚未选择任何值,则不会选择任何值
  • 我的索引已正确刷新
  • 见下面的两个屏幕,左侧是我的属性参数,右侧是我的多重选择。

enter image description here

我的想法已经用完了,谢谢你的帮助。

5 个答案:

答案 0 :(得分:11)

这是Magento Adminhtml表单的已知(烦人)行为 问题是如果没有为多选项选择任何值,则在提交表单时不会发布该属性的值。

在服务器端,Magento然后加载模型,在模型上设置所有已发布的属性值并保存。
由于未发布任何值,因此未更新模型上加载的原始值。

作为具有自定义源模型的属性的解决方案,我倾向于提供带有特殊选项值的空选项(例如-1)。该值不得为0或空字符串。

然后我为该属性指定一个后端模型,用于检查_beforeSave()方法中的特殊值。如果找到后端模型,则取消设置模型实例上的属性。

以下是一个例子:

来源模型:

class Your_Module_Model_Entity_Attribute_Source_Example
    extends Mage_Eav_Model_Entity_Attribute_Source_Abstract
{
    const EMPTY = '-1';

    public function getAllOptions()
        $options = array(
            array('value' => 1, 'label' => 'One'),
            array('value' => 2, 'label' => 'Two'),
            array('value' => 3, 'label' => 'Three')
        );
        if ($this->getAttribute()->getFrontendInput() === 'multiselect')
        {
            array_unshift($options, array('value' => self::EMPTY, 'label' => ''));
        }
        return $options;
    }
}

后端型号:

class Your_Module_Model_Entity_Attribute_Backend_Example
    extends Mage_Eav_Model_Entity_Attribute_Backend_Abstract
{
    public function beforeSave($object)
    {
        $code = $this->getAttribute()->getAttributeCode();
        $value = $object->getData($code);
        if ($value == Your_Module_Model_Entity_Attribute_Source_Example::EMPTY)
        {
            $object->unsetData($code);
        }
        return parent::beforeSave($object);
    }
}

如果您找到更好的解决方法,请告诉我。

答案 1 :(得分:3)

有一个名为<can_be_empty>的功能,您需要转到system.xml并将此配置添加到您的文件中:

<can_be_empty>1</can_be_empty>

然后检查元素并删除所选的=&#34;选择&#34;并点击保存,现在您可以保存多选而不带任何值。

答案 2 :(得分:1)

是的,我发现这对bum来说也是一个巨大的痛苦但是,如果你试图一次更新多个产品的属性,那么就会导致删除下拉属性选择,从而改进了之前的bug。

无论如何,如果我想使用下拉属性从产品中删除选项,请执行以下操作:

  1. 转到管理属性
  2. 点击管理标签选项
  3. 向列表中添加临时选项
  4. 将此新属性选项分配给您想要的所有产品 改变
  5. 删除临时属性选项
  6. 全部解决了。

答案 3 :(得分:1)

通过chrome / firefox开发人员工具向html添加一个不存在的选项,选择该选项并保存。 例如

<option value="99999999">Click this to unselect option</option>

答案 4 :(得分:0)

在Magento 1.7.0.2中遇到了这个问题,我的解决方案:

  • 将Firefox与Firebug一起使用

  • 右键单击多选列表,选择Inspect with Element,你会在Firebug的底部看到类似的内容: XLARGE

  • 双击选中,右键单击,剪切,不再选择属性,然后保存页面。