3

下面是如何创建一个新的产品多选属性:编程设置多选的默认值/选择Magento的属性

$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表的列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 
    ), 
); 

同样的事情发生了多选:没有选项是默认选中。

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

+0

也有这个问题..你解决了吗? –

+0

使用multiselect布尔值是没有意义的......整点是一个布尔值,它有两个值0/1。 – Andrew

回答

2

我也遇到这个问题,创建自定义{产品,客户,地址}属性和添加实体时出现问题。

在Mage_Catalog_Model_Resource_Setup :: _ prepareValues中定义了一些导致此问题的“default”实体集。

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

$model = Mage::getModel('eav/entity_attribute') 
    ->load($installer->getAttributeId(Mage_Catalog_Model_Product::ENTITY, 'product_country')); 
$model 
    ->setDefaultValue(Mage::helper('eav')->__('Yes')) 
    ->save();