Magento在安装脚本中添加产品属性

时间:2015-05-13 11:02:33

标签: php xml magento attributes install

我想通过安装脚本在Magento中添加属性到产品价格。它应该是一个显示在价格组中的选择字段,由两个值组成 - 是和否。但是我遇到了一个问题:我的代码不起作用。尽管长期查看我的代码,问题仍然没有解决。你能帮帮我解决这个问题吗?这是我的代码:

部分/../ etc / config.xml

<module>
        <My_Module
            <version>1.0.0</version>
        </My_Module
    </module>
    <global>
        <models>
            <module>
                <class>My_Module_Model</class>
            </module>
        </models>
            <resources>              
                <module_setup>
                    <setup>
                        <module>My_Module</module>
                       <class>Mage_Catalog_Model_Resource_Setup</class>
                    </setup>
                    <connection>
                        <use>core_setup</use>
                    </connection>
                </module_setup>
                <module_write>
                    <connection>
                        <use>core_write</use>
                    </connection>
                </module_write>
                <module_read>
                    <connection>
                        <use>core_read</use>
                    </connection>
                </module_read>
            </resources>
    </global>

/../ SQL / mymodule_setup / mysql4安装-1.0.0.php

$installer = $this;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();


$setup->addAttribute("catalog_product", "price_offer",  array(
                    'group'         => 'Prices', 
                    'type'          => 'int',
                    'attribute_set' =>  'Price',
                    'backend'       => '',
                    'frontend'      => '',
                    'label'         => 'Allow Price Offer',
                    'input'         => 'select',
                    'global'        => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
                    'backend'    => 'eav/entity_attribute_backend_array',
                    'visible'       => true,
                    'required'      => false,
                    'user_defined'  => true,
                    'default'       => '0',
                    'visible_on_front' => false,
                    'used_in_product_listing' => true,
                    'apply_to' => 'simple,configurable',
                    'sort_order'    => 10,
                    'is_configurable' => 1,
                    'option'     => array (
                        'values' => array(
                            0 => 'No',
                            1 => 'Yes',
                        )
                    ),

    ));

$installer->endSetup(); 

最后,这是/etc/modules/My_Module.xml:

<config>
    <modules>
        <My_Module>
            <codePool>local</codePool>
            <active>true</active>
        </My_Module>
    </modules>
</config>

希望你帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

此类Mage_Eav_Model_Entity_Setup中有错误 使用($ installer是Mage_Catalog_Model_Resource_Setup类)

$installer->addAttribute( ...);

答案 1 :(得分:0)

您的安装脚本绝对不是问题,代码格式化很简单。看起来它是配置导致您的问题。你的意思是安装脚本没有运行所以数据库没有更新,或者是数据库中的值而没有出现在Magento上?

对于您的配置,我认为您需要一个数据库处理程序,因此您需要一个资源模型:

<module>
    <My_Module>
        <version>1.0.0</version>
    </My_Module>
</module>
<global>
    <models>
        <module>
            <class>My_Module_Model</class>
        </module>
    </models>
    <my>
        <class>My_Module_Model</class>
        <resourceModel>my_module_resource</resourceModel>
    </my>
    <my_module_resource>
        <class>my_module_Model_Mysql4</class>
    </my_module_resource>
        <resources>              
            <module_setup>
                <setup>
                    <module>My_Module</module>
                   <class>Mage_Catalog_Model_Resource_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </module_setup>
            <module_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </module_write>
            <module_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </module_read>
        </resources>
</global>

如果您遵循此代码,请记住在“模型”文件夹下添加资源模型。