Magento - 无法在产品管理中删除多个选择值

标签 magento admin multiple-select

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

笔记:

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

  • enter image description here

    我的想法快用完了,所以感谢您的帮助。

    最佳答案

    这是 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);
        }
    }
    

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

    关于Magento - 无法在产品管理中删除多个选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9226709/

    相关文章:

    api - 如何正确设计一个 Restful API 来使缓存无效?

    Django:在管理表单之外使用ForeignKeyRawIdWidget

    mysql select 基于两个条件

    mysql - 如果条件匹配,如何循环遍历 MySQL 表中的每一行并获取行

    postgresql - Postgres - 简化基于日期的选择子查询的重复

    php - Magento:当用户放弃 Paypal 付款时,库存商品减少

    jquery - Magento 可配置产品图像缩放问题

    magento - 如何删除 Magento Dataflow Import 上传的文件?

    Magento自定义模块: How to Create Admin menu

    python - Django 管理员 CIDR 类型