我想在“目录价格规则”部分的“操作”标签中添加自定义字段。
这就是我所做的:
我将这些行添加到文件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>
$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中?
由于
答案 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'),
),
));