【问题标题】:How set a default Value with EAV AddAttribute如何使用 EAV AddAttribute 设置默认值
【发布时间】:2012-04-01 20:18:25
【问题描述】:

我想在 magento 中为我的产品设置一个新的属性集。该属性应该是从某些选项中选择的类型。

$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 设置为默认值?

【问题讨论】:

    标签: magento select attributes option entity-attribute-value


    【解决方案1】:

    遇到了同样的问题。我的解决方案:

    $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();
    

    【讨论】:

      【解决方案2】:

      请使用这个脚本:-

      $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'
          ),
      ));
      

      希望对你有帮助。

      【讨论】:

      • @koenig - 您是否从该数据库表“core_resource”中删除了您的模块唯一组代码?如果数据库中存在该唯一组代码,则不会调用您的安装脚本。
      【解决方案3】:

      导航到目录>管理属性以创建新属性并管理属性单元以创建新属性集。

      请查看截图

      【讨论】:

      • 感谢您的回答,但我想使用 installscript 来获取属性。
      猜你喜欢
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多