我试图搜索这个但找不到任何东西。以编程方式使用选择类型创建自定义产品属性时,Magento始终将 eav / entity_attribute_source_table 指定为源模型。
此默认来源模型存在两个问题:
我无法使用其他地方以编程方式自动填充数据字段,而不必逐个手动输入数据列表。
虽然我已经指定了“default”或“default_value”(我可以在数据库中看到该值存在),但该字段仍然显示为第一行为空。
如何将默认的source_model更改为我自己的选择类型的源模型?
谢谢
答案 0 :(得分:3)
您要查找的密钥是在SQL设置中传递source
值。确保您的$installer
是EAV setup object。
您将在设置脚本中执行以下操作:
$installer = $this;
$installer->starSetup();
// Setup customer multiselect attribute
$attr = array(
'backend' => 'eav/entity_attribute_backend_array',
'input' => 'multiselect',
'label' => 'Permissions',
'note' => 'Used for group-based frontend permissions.',
'required' => false,
'sort_order' => '1000',
'source' => 'eav/entity_attribute_source_table', // Change it here
'user_defined' => true
);
$installer->addAttribute('customer', 'permissions', $attr);
// Add options for permissions
$options = array(
'attribute_id' => $installer->getAttributeId('customer', 'permissions'),
'value' => array(
'place_order' => array('Can Place Orders'),
'view_catalog' => array('Can View the Catalog'),
)
);
$installer->addAttributeOption($options);
$installer->endSetup();
很确切地说,我相信源模型可以是提供toOptionArray()
函数的任何东西。
答案 1 :(得分:0)
在Mage_Customer
,安装程序mysql4-upgrade-1.5.9.9-1.6.0.0.php
其中,国家来源模型正在分配给客户地址属性country_id
。
$installer->updateAttribute(
'customer_address',
'country_id',
'source_model',
'customer/entity_address_attribute_source_country'
);
将其更改为catalog_product,您的属性和源模型。
答案 2 :(得分:0)
您可以设置源类型,如下所示。
'source' => 'categoryattr/attribute_source_type',
并创建文件Attribute \ Source \ Type.php并创建选项并将值0设置为默认选项。
$this->_options[] = array (
'label' => 'Select Category',
'value' => '0'
);
请参阅下面的文件结构和逐步说明。
http://www.pearlbells.co.uk/how-to-create-custom-attribute-source-type-in-magento/