【问题标题】:Unable to understand Install script (sql script) in Magento无法理解 Magento 中的安装脚本(sql 脚本)
【发布时间】:2016-01-20 07:26:22
【问题描述】:

我通过更新sql脚本来添加属性,像这样,

$installer = $this;
$installer->startSetup();
$installer->addAttribute('customer_address', 'group_id', array(
'label'        => 'Address group',
'visible'      => true,
'required'     => false,
'type'         => 'int',
'input' => 'select',
'source' => 'address_group/address_attribute_source_group',
'user_defined' => 1,
'position'  => 100
));

.
.
.
$installer->endSetup();

我无法理解下面的行是什么意思,我找不到任何解释

'source' => 'address_group/address_attribute_source_group',

【问题讨论】:

    标签: magento attributes sql-update


    【解决方案1】:

    我无法对您的帖子发表评论。试图了解您是否从某个地方复制了此代码。从您的代码中,我了解到您想要添加一个名为“customer_address”的“客户地址属性”

    'source' => 'address_group/address_attribute_source_group'

    上面的含义是路径。你应该有一个文件夹/文件路径如下:

    /app/code/local/Address/Group/Model/Address/Attribute/Source/Group.php

    组.php: 类 Address_Group_Model_Address_Attribute_Source_Group ...

    因为这个属性是 TYPE => "SELECT",你应该在这个文件 "Group.php" 中有选项数组

    Options Array 应该非常类似于:

    public function toOptionsArray() {
        
        return array(
            array(
                'label' => '',
                'value' => ''
            ),
            array(
                'label' => Yes,
                'value' => 1
            ),
            array(
                'label' => No,
                'value' => 0
            )
        );
    }
    

    如果你知道了,请告诉我!

    乐于助人!

    快乐编码...

    【讨论】:

    • 我知道了,但是我的课是这样的,'class Address_Group_Model_Address_Attribute_Source_Group extends Mage_Eav_Model_Entity_Attribute_Source_Table { }'
    • 而 'Mage_Eav_Model_Entity_Attribute_Source_Table' 没有类似 toOptionsArray()
    • 您必须在 Group.php 中使用您的值创建此函数。
    • 因为Mage_Eav_Model_Entity_Attribute_Source_Table 使用数据库表,它保存了管理员在属性配置表单中添加的所有选项。它使用getAllOptions 来获取它们。
    • 同意 Zefiryn.. 您可以选择使用 XML 添加类似于默认 magento 的值。但是,不要直接更新 CORE 文件。
    【解决方案2】:

    它指向为属性提供选项的类。由于属性使用select 输入,因此需要提供选项。这个类是通过调用Mage::getModel() 并将source 的值传递给它来创建的。要查找类,您需要在可用模块的config.xml 文件中找到节点models/address_group。这将提供类前缀。接下来将斜杠之后的内容添加到该前缀以创建类名。所以在这种情况下,它将解析为Company_AddressGroupModule_Model_Address_Attribute_Source_Group。该类需要实现toOptionsArray方法,该方法返回如下格式的数组:

    array(
        array('value' =>  'option_value', 'label' => 'option_label'),
        ...
    );
    

    【讨论】:

    • 我知道了,可以看到下面给出的我的 cmets
    猜你喜欢
    • 2014-08-26
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多