1

我正在尝试将自定义字段添加到 magento checkout onepage。我遵循了一个在 1.4.1 中不起作用的示例,因为移至平面订单表(我认为)http://inchoo.net/ecommerce/magento/adding-a-new-tab-under-one-页面结帐完整工作模块/

我可以在结帐页面中看到我的自定义选项卡和我的自定义字段,但我无法将这些字段保存到数据库中。

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

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

谢谢

4

1 回答 1

3

免责声明:我已经 6 个月没有接触过 Magento。现在就是说,如果您查看 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'));

$this 是从 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 元素来完成的(将 sales_setup 替换为 yourmod_setup)。因此,您转储数据库,通过在 mysql4-install-0.1.0.php 文件中使用 get_class($this) 检查它是否有效,然后恢复您的数据库。然后你继续在你的设置文件中编写,从你在 app/code/core/Mage/Sales/sql/sales_setup 文件中看到的内容中启发自己,它应该没问题!现在是第二点......我不知道......我希望它会自动工作!祝你好运!

于 2010-08-22T18:13:35.357 回答