3

以下是我创建新产品多选属性的方法:

$eav = new Mage_Catalog_Model_Resource_Setup('core_setup');

$eav->addAttribute(
    Mage_Catalog_Model_Product::ENTITY, 
    "product_country", 
    array(
        'label'                      => 'Country',
        'group'                      => 'General',
        'type'                       => 'text',
        'input'                      => 'multiselect',
        'global'                     => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE,
        'user_defined'               => true,
        'required'                   => true,
        'visible'                    => true,
        'source'                     => 'ns/some_source', // this source has the "UK" value
        'backend'                    => 'eav/entity_attribute_backend_array',
        'default'                    => 'UK',
    )
);

我也尝试过使用“是/否”值

"type" => "boolean" 

或者

"type" => "select",
'source' => 'eav/entity_attribute_source_boolean'

它们在功能上是相同的。

在所有情况下,具有default值的键正确填充eav_attribute表 column default_value。但"default" => "1"就编辑页面上的输入而言,拥有“是/否”属性并没有做任何事情。“否”仍然被选中,我期待“是”,因为“1”映射到“是”:

// Mage_Eav_Model_Entity_Attribute_Source_Boolean
$this->_options = array(
    array(
        'label' => Mage::helper('eav')->__('Yes'),
        'value' =>  1
    ),
    array(
        'label' => Mage::helper('eav')->__('No'),
        'value' =>  0
    ),
);

多选也会发生同样的事情:默认情况下不选择任何选项。

我没主意了。如果不设置属性的默认值,有谁知道“默认”列/键的目的是什么?如何设置属性值以在新建/编辑产品后端页面上自动选择?

4

1 回答 1

2

我也遇到了这个问题,创建自定义 {product, customer, address} 属性和添加实体时出现问题。

在 Mage_Catalog_Model_Resource_Setup::_prepareValues 中定义了一些导致此问题的“默认”实体集。

最好的解决方案是在创建属性后加载属性并设置默认值。

 $model = Mage::getModel('eav/entity_attribute')
     ->load($installer->getAttributeId(Mage_Catalog_Model_Product::ENTITY, 'product_country'));
 $model
     ->setDefaultValue(Mage::helper('eav')->__('Yes'))
     ->save();
于 2013-06-03T09:07:37.123 回答