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

时间:2014-10-06 21:39:07

标签: magento magento-1.9

我想在“目录价格规则”部分的“操作”标签中添加自定义字段。

这就是我所做的:

  1. 我将这些行添加到文件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'),
        ),
    ));
    
  2. 我在此文件中将版本更改为1.6.0.4:app \ code \ core \ Mage \ CatalogRule \ etc \ config.xml

    <Mage_CatalogRule>
        <version>1.6.0.4</version>
    </Mage_CatalogRule>
    
  3. 我创建了一个名为app \ code \ core \ Mage \ CatalogRule \ sql \ catalogrule_setup \ upgrade-1.6.0.3-1.6.0.4.php
  4. 的新文件
    $installer->startSetup();
    $ruleProductTable = $installer->getTable('catalogrule/rule');
    $columnOptions = array(
        'TYPE' => Varien_Db_Ddl_Table::TYPE_SMALLINT,
        'UNSIGNED'  => true,
        'NULLABLE'  => false,
        'DEFAULT'   => 0,
        'COMMENT'   => 'Custom Field',
    );
    $installer->getConnection()->addColumn($ruleProductTable, 'custom_field', $columnOptions);
    $installer->endSetup();
    

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

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

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

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

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

    由于

1 个答案:

答案 0 :(得分:0)

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

目录结构:

/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 /宣传/录/编辑/标签/ Main.php

编辑文件并在$ form-&gt; setValues($ model-&gt; 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'),
            ),
        ));