2012-03-16 31 views
3

我想为我的magento产品设置一个新的属性集。该属性应该是某些选项的选择类型。如何通过EAV设置默认值AddAttribute

$installer->addAttribute('catalog_product', 'reserve', array(
    'backend_label'  => 'Attribute Reserve', 
    'type'    => 'varchar', 
    'input'    => 'select', 
    #'backend'   => 'eav/entity_attribute_source_boolean', 
    'frontend'   => '', 
    'source'   => '', 
    #'default'   => 1, 
    'global'   => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL, 
    'visible'   => true, 
    'required'   => false, 
    'user_defined'  => true, 
    'searchable'  => false, 
    'filterable'  => false, 
    'comparable'  => false, 
    'visible_on_front' => false, 
    'visible_in_advanced_search' => false, 
    'unique'   => false, 
    'option' => array(
     'value' => array( 
      'optionone' => array('O'), 
      'optiontwo' => array('P'), 
      'optionthree' => array('Kein Angabe'), 
     ) 
    ), 
)); 

如何将optionthree设置为默认值?

回答

-1

导航到目录>管理属性以创建新属性并管理属性创建新属性集。 enter image description here

请检查截图

+0

谢谢你的回答,但我想要使用installscript来获取属性。 – koenig 2012-03-16 09:55:50

4

请使用脚本: -

$installer->addAttribute('catalog_product', 'reserve', array(
    'backend_label'  => 'Attribute Reserve', 
    'type'    => 'varchar', 
    'input'    => 'select', 
    #'backend'   => 'eav/entity_attribute_source_boolean', 
    'frontend'   => '', 
    'source'   => '', 
    'global'   => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL, 
    'visible'   => true, 
    'required'   => false, 
    'user_defined'  => true, 
    'searchable'  => false, 
    'filterable'  => false, 
    'comparable'  => false, 
    'visible_on_front' => false, 
    'unique'   => false, 
    'visible_in_advanced_search' => false, 

    'option' => array(
     'value' => array( 
      'optionone' => array('O'), 
      'optiontwo' => array('P'), 
      'optionthree' => array('Kein Angabe'), 
     ) 
    ), 
    /** 
    * This will set the default values, 
    * as "array" data type is being used to set proper default value 
    */ 
    'default' => array(
     'optionthree' 
    ), 
)); 

希望它能帮助。

+0

没有抱歉,它不工作 – koenig 2012-03-16 11:40:11

+0

@koenig - 您是否已从此数据库表“core_resource”中删除模块唯一组代码?如果数据库中存在唯一的组代码,则不会调用安装脚本。 – 2012-03-16 13:34:52

6

有同样的问题。我的解决办法:

$installer->addAttribute('catalog_product', 'reserve', array(
    'backend_label'  => 'Attribute Reserve', 
    'type'    => 'int', 
    'input'    => 'select', 
    #'backend'   => 'eav/entity_attribute_source_boolean', 
    'frontend'   => '', 
    'source'   => 'eav/entity_attribute_source_table', 
    'global'   => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL, 
    'visible'   => true, 
    'required'   => false, 
    'user_defined'  => true, 
    'searchable'  => false, 
    'filterable'  => false, 
    'comparable'  => false, 
    'visible_on_front' => false, 
    'unique'   => false, 
    'visible_in_advanced_search' => false, 

    'option' => array(
     'value' => array( 
      'optionone' => array('O'), 
      'optiontwo' => array('P'), 
      'optionthree' => array('Kein Angabe'), 
     ) 
    ), 
)); 

通知的不同类型(int代替varchar)和源极(eav/entity_attribute_source_table)。这是Magento代表典型选择属性的方式。现在你可以像这样设置默认值:

$model = Mage::getModel('eav/entity_attribute') 
    ->load($installer->getAttributeId('catalog_product', 'reserve')); 
$model 
    ->setDefaultValue($model->getSource()->getOptionId('Keine Angabe')) 
    ->save();