2010-08-21 140 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