首页 文章

Magento - 在“目录价格规则”中为操作添加字段

提问于
浏览
2

我想在“目录价格规则”部分的“操作”选项卡中添加自定义字段 .

这就是我做的:

  • 我将这些行添加到文件app \ code \ core \ Mage \ Adminhtml \ Block \ Promo \ Catalog \ Edit \ Tab \ Actions.php
$fieldset->addField('custom_field', 'select', array(
    'label'     => 'Custom Field',
    'title'     => 'Custom Field',
    'name'      => 'custom_field',
    'options'    => array(
        '1' => Mage::helper('catalogrule')->__('Yes'),
        '0' => Mage::helper('catalogrule')->__('No'),
    ),
));
  • 我在此文件中将版本更改为1.6.0.4:app \ code \ core \ Mage \ CatalogRule \ etc \ config.xml
<Mage_CatalogRule>
    <version>1.6.0.4</version>
</Mage_CatalogRule>
  • 我创建了名为app \ code \ core \ Mage \ CatalogRule \ sql \ catalogrule_setup \ upgrade-1.6.0.3-1.6.0.4.php的新文件

$ installer-> startSetup();
$ ruleProductTable = $ installer-> getTable('catalogrule / rule');
$ columnOptions = array(
'TYPE'=> Varien_Db_Ddl_Table :: TYPE_SMALLINT,
'UNSIGNED'=> true,
'NULLABLE'=> false,
'DEFAULT'=> 0,
'COMMENT'=>'自定义字段',
);
$ installer-> getConnection() - > addColumn($ ruleProductTable,'custom_field',$ columnOptions);
$ installer-> endSetup();

然后,我登录管理面板并尝试编辑其中一个目录价格规则 .

我在动作标签中看到了我的新领域 - 太棒了!

但是,当我单击“保存”时,我在该字段中所做的更改未保存 .

我登录到phpmyadmin并转到catalogrule表 . 在这个表中我可以看到新字段custom_field,值为0(默认值) - 所以它确实没有保存更改 .

我的问题是我做错了什么?为什么custom_field中的更改未保存在DB中?

谢谢

1 回答

  • 0

    我不确定为什么它不适合你,我的猜测是你的安装程序没有被调用 . 我通过一个模块和本地编辑来管理修改,以便将来证明这一变化 .

    Directory structure:

    /app/code/local/custom/promo
    /app/code/local/custom/promo/etc/
    /app/code/local/custom/promo/sql
    /app/code/local/custom/promo/sql/promo_setup
    /app/code/core/local/Adminhtml/Block/Promo/Catalog/Edit/Tab
    

    添加文件/app/code/local/custom/promo/etc/config.xml

    <?xml version="1.0"?>
    <config>
        <modules>
            <Custom_Promo>
                <version>1.0</version>
            </Custom_Promo>
        </modules>
        <global>
            <resources>
                <promo_setup>
                    <setup>
                        <module>Custom_Promo</module>
                        <class>Mage_Catalog_Model_Resource_Setup</class>
                    </setup>
                </promo_setup>
            </resources>
        </global>
    </config>
    

    添加文件/app/code/local/custom/promo/sql/promo_setup/install-1-0.php

    /* @var $installer Mage_Core_Model_Resource_Setup */
    $installer = $this;
    $installer->startSetup();
    $ruleProductTable = $installer->getTable('catalogrule/rule');
    $columnOptions = array(
        'TYPE' => Varien_Db_Ddl_Table::TYPE_BOOLEAN,
        'NULLABLE'  => false,
        'COMMENT'   => 'Custom Promo',
    );
    $installer->getConnection()->addColumn($ruleProductTable, 'custom_promo', $columnOptions);
    $installer->endSetup();
    

    清除缓存并通过查看catalog_rule表来验证列是否已添加

    SELECT * FROM catalogrule;
    

    最后取一份/app/code/core/Mage/Adminhtml/Block/Promo/Catalog/Edit/Tab/Main.php并创建相同的文件/ app / code / core / local / Adminhtml / Block / Promo / Catalog /Edit/Tab/Main.php

    编辑文件并在$ form-> setValues($ model-> getData())之前添加字段;

    //Custom Promo
            $fieldset->addField('custom_promo', 'select', array(
                'label'     => 'Custom Promo',
                'title'     => 'Custom Promo',
                'name'      => 'custom_promo',
                'options'    => array(
                    '1' => Mage::helper('catalogrule')->__('Yes'),
                    '0' => Mage::helper('catalogrule')->__('No'),
                ),
            ));
    

相关问题