我已经到处寻找答案,通过Magento混乱,我不能找到一个工作的解决方案.我创建magento属性动态,这是好的,但当涉及到
- 设置值
- 设置默认值
- 添加更多选项
- 使属性可搜索
似乎什么都不管用。
下面是添加属性的代码
$key = "Brand";
$name = "brand";
$specific = "Cola";
$installer->addAttribute('catalog_product', $name, array(
'type' => 'varchar',
'input' => 'select',
'backend' => '',
'frontend' => '',
'label' => $key,
'class' => '',
'source' => '',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => true,
'default' => '',
'searchable' => true,
'filterable' => true,
'comparable' => true,
'visible' => true,
'visible_on_front' => true,
'visible_in_advanced_search' => true,
'unique' => false,
'apply_to' => '',
'is_configurable' => false,
'option' => array(
'values' => array($specific)
)
));
$installer->endSetup();
$attrID = $installer->getAttribute('catalog_product', $name,'attribute_id');
$attr = Mage::getModel('eav/entity_attribute')->load($attrID);
$attr->setStoreLabels(array(1 => $key))->save();
它添加的很好,它甚至为我添加了选项,但我似乎不能设置该选项为默认(添加更多的以后),我不能使它可搜索。
我真的希望有人能帮忙。
谢谢
更新:
好吧,我已经设法得到它添加默认(仍然不可搜索等)使用此代码。
$key = "Brand";
$name = "brand";
$specific = "Cola";
$installer->startSetup();
$installer->addAttribute('catalog_product', $name, array(
'type' => 'int',
'input' => 'select',
'backend' => '',
'frontend' => '',
'label' => $key,
'class' => '',
'source' => 'eav/entity_attribute_source_table',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => true,
'default' => '',
'searchable' => true,
'filterable' => true,
'comparable' => true,
'visible' => true,
'visible_on_front' => true,
'visible_in_advanced_search' => true,
'unique' => false,
'apply_to' => '',
'is_configurable' => false,
'option' => array(
'value' => array(
$this->getAttributeName($specific) => array($specific)
)
)
));
$installer->endSetup();
$attrID = $installer->getAttribute('catalog_product', $name,'attribute_id');
$attr = Mage::getModel('eav/entity_attribute')->load($attrID);
$attr->setStoreLabels(array(1 => $key));
$attr->setDefaultValue($attr->getSource()->getOptionId($this->getAttributeName($specific)));
$attr->save();
然而,当我使用$specific =“Pepsi”的代码添加新选项时;
$model = Mage::getModel('catalog/resource_eav_attribute');
$option = array();
$option['attribute_id'] = $attr;
$option['value'][$this->getAttributeName($specific)][1] = $specific;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$setup->addAttributeOption($option);
我得到的错误:“未定义默认选项值”
3条答案
按热度按时间drnojrws1#
您是否尝试使用
'is_searchable' => true
而不是'searchable' => true
?v9tzhpje2#
在catalaog_eav_attribute中查找。有一个类型为smallint的列'is_searchable'
试试看:
2skhul333#
参考错误:
“未定义默认选项值”
添加选项时:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$option['value'][$this->getAttributeName($specific)][1] = $specific;
这里的[0]是选项的“默认管理值”,[1]是“默认存储值”。
$option['value'][$this->getAttributeName($specific)][0] = $specific;
您的代码没有将 $specific 设置为默认选项,而是将 $specific 设置为默认存储的值。