我正在尝试将自定义字段添加到magento checkout onepage。 我跟随了一个在1.4.1中不起作用的例子,因为移动到平面订单表(我认为)http://inchoo.net/ecommerce/magento/adding-a-new-tab-under-one-page-checkout-full-working-module/
我可以在自定义字段的结帐页面中看到我的自定义标签,但我无法将字段保存到数据库中。
如何在报价和订单表中添加列? 应该转到Mymod / sql / mymod_setup / mysql4-install-0.1.0.php还是其他地方?
如何将字段保存到数据库? 我需要先将它保存到报价中吗? 我是否使用观察者或其他东西? 我需要在模块的config.xml中包含元素吗? http://www.magentocommerce.com/boards/viewthread/19344/
由于
答案 0 :(得分:3)
免责声明:我没有接触Magento 6个月。 现在说,如果你查看app / code / core / Mage / Sales / sql / sales_setup /目录,你会发现如何修改订单表的例子。例如,这里是app / code / core / Mage / Sales / sql / sales_setup / mysql4-upgrade-0.9.12-0.9.13.php(没有标题注释)的内容:
$installer = $this;
/* @var $installer Mage_Sales_Model_Mysql4_Setup */
$installer->addAttribute('quote', 'subtotal', array('type'=>'decimal'));
$installer->addAttribute('quote', 'base_subtotal', array('type'=>'decimal'));
$installer->addAttribute('quote', 'subtotal_with_discount', array('type'=>'decimal'));
$installer->addAttribute('quote', 'base_subtotal_with_discount', array('type'=>'decimal'));
$这是从config / global / resources / sales_setup / setup / class之后的app / code / core / Mage / Sales / etc / config.xml中的内容初始化,看看这个类,你会看到它继承自Mage_Eav_Model_Entity_Setup(默认安装类),并覆盖或添加一些方法(例如,对于平面表支持)。
要回答第一点(第一个问题),可以使用此类的addAttribute()方法添加列。第二个问题的答案是肯定的,但您必须在模块的config.xml文件中指定要使用Mage_Sales_Model_Mysql4_Setup作为安装类。这是通过添加先前在app / code / core / Mage / Sales / etc / config.xml中找到的相同xml元素来完成的(将sales_setup替换为yourmod_setup)。因此,您转储数据库,在mysql4-install-0.1.0.php文件中使用get_class($ this)检查它是否正常工作,然后恢复数据库。然后你继续在你的设置文件中写一下,从你在app / code / core / Mage / Sales / sql / sales_setup文件中看到的内容中鼓舞自己,它应该没问题! 现在第二点......我不知道......我希望它会自动运行! 祝你好运!