1

カスタム フィールドを magento チェックアウト ワンページに追加しようとしています。フラットオーダーテーブルに移行したため、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/

ありがとう

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() メソッドを使用して列を追加できます。2 番目の質問に対する答えは「はい」ですが、Mage_Sales_Model_Mysql4_Setup をセットアップ クラスとして使用することをモジュールの config.xml ファイルで指定する必要があります。これは、前に 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 のファイルに表示される内容からインスピレーションを得て、セットアップ ファイルに書き込みを続けます。問題ないはずです! 2 番目のポイントについては…わかりません… 自動的に機能することを願っています。幸運を!

于 2010-08-22T18:13:35.357 に答える