2010-08-21 207 views
1

我试图将自定义字段添加到magento结帐onepage。 我跟着一个例子,因为移动到一个平的订单表(我认为)在1.4.1不起作用http://inchoo.net/ecommerce/magento/adding-a-new-tab-under-one-page-checkout-full-working-module/将自定义字段添加到magento的onepage结帐

我可以在我的自定义字段的结帐页面看到我的自定义选项卡,但我不能将字段保存到数据库。

  • 如何在报价表和订单表中添加列? 这应该去Mymod/sql/mymod_setup/mysql4-install-0.1.0.php或其他地方?

  • 如何将字段保存到数据库? 我是否需要先将它保存到报价单中? 我是否使用观察者或其他东西? 我需要在我的模块的config.xml中有元素吗? http://www.magentocommerce.com/boards/viewthread/19344/

感谢

回答

3

免责声明:我没碰过Magento的6个月。 现在说的是,如果你看一下app/code/core/Mage/Sales/sql/sales_setup /目录,你会发现如何修改订单表的例子。比如这里是应用程序/代码/核心的内容/法师/销售/ SQL/sales_setup/mysql4升级-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')); 

$这从app/code/core/Mage/Sales/etc/config.xml中的config/global/resources/sales_setup/setup/class看看这个类,然后你会看到它继承自Mage_Eav_Model_Entity_Setup,默认设置类,并重写或添加一些方法(例如对于平台支持)。

要回答您的第一个问题(第一个问题),您可以使用此类的addAttribute()方法添加列。第二个问题的答案是肯定的,但是您必须在模块的config.xml文件中指定要使用Mage_Sales_Model_Mysql4_Setup作为安装类。这是通过添加先前在app/code/core/Mage/Sales/etc/config.xml中找到的相同的xml元素来完成的(用你的mod_setup替换sales_setup)。所以你转储你的数据库,你通过在你的mysql4-install-0.1.0.php文件中使用get_class($ this)检查它的工作原理,然后你恢复你的数据库。并且你继续在你的设置文件中写入,从你在app/code/core/Mage/Sales/sql/sales_setup中看到的文件中启发自己,并且它应该没问题! 现在第二点......我不知道......我希望它会自动工作! 祝你好运!

+0

我不认为它适用于1.4.1,因为表格从EAV变为了平坦。看看mysql4-upgrade-1.4.0.2-1.4.0.3.php。他们使用addColumn而不是addAttribute。 – pablo 2010-08-23 01:02:38

+0

@pablo:你看过我的回答吗?如果说一些方法增加了平台支持。这是addAttribute()方法的情况。只需看看Mage_Sales_Model_Mysql4_Setup类。 – greg0ire 2010-08-23 08:14:37

+0

我错过了您建议使用销售设置模块的事实。我会尝试一下并报告我的结果。谢谢。 – pablo 2010-08-23 10:07:58