2013-10-16 186 views
2

我试图搜索这个,但找不到任何。以编程方式使用选择类型创建自定义产品属性时,Magento始终将eav/entity_attribute_source_table指定为源模型。如何为自定义属性类型选择创建自定义源模型?

有2个问题与此默认源模型:

  1. 我不能自动填充字段从别的地方其他编程获取的数据不是必须输入数据列表中手动一个接一个。

  2. 尽管我已经指定了“default”或“default_value”(我可以在数据库中看到该值在那里),但该字段仍然显示为第一行。

如何将默认source_model更改为我自己的选择类型的源模型?

谢谢

回答

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,属性和源模型。

+0

嗯,我还以为source_model可以在属性创建过程中进行分配。看来我必须为所有新属性添加updateAttribute()步骤(因为大多数新属性都是select的类型)。不管怎么说,还是要谢谢你。 – user2880076

3

您正在查找的密钥是在您的SQL设置中传递source值。确保你的$installerEAV 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(); 

Utimately,我相信源模型可以是任何东西,它提供了toOptionArray()功能。

+0

多选不存在问题。我可以指定多选的源模型,但不能选择。即使我已经分配了自己的source_model,它仍然会使用默认值,直到我运行updateAttribute()。 – user2880076

+0

上面的例子应该与任一。你能用你的代码更新这个问题吗? –

+0

我使用的最终代码与djdy中的代码相同 – user2880076