注文ページに列を追加する必要があります。これは、列をに追加することを意味します。どちらも可能ですが、値を追加して新しい列に保存する方法はわかりません。Magentoで注文した余分なデータを保存する
新しい属性も登録する必要がありますか?
値が引用符に含まれていないので、値が変換されないため、config/global/fieldsets/sales_convert_quote
の下に登録する必要はありません。
Magento Enterprise 1.8を使用する。
注文ページに列を追加する必要があります。これは、列をに追加することを意味します。どちらも可能ですが、値を追加して新しい列に保存する方法はわかりません。Magentoで注文した余分なデータを保存する
新しい属性も登録する必要がありますか?
値が引用符に含まれていないので、値が変換されないため、config/global/fieldsets/sales_convert_quote
の下に登録する必要はありません。
Magento Enterprise 1.8を使用する。
を参照してくださいも
これらのテーブルに複数のフィールドを追加することを意味しますそれは今です。
sales_flat_order_grid
で開始するが、私はそれが「メイン」テーブル(sales_flat_order
)とメインテーブル+「_grid」(sales_flat_order_grid
)の両方を検査働い道に従うことによって、Mage_Sales_Model_Mysql4_Order_Abstract::updateGridRecords()
に更新され、その列の交差を取りますそれからクエリを構築します。したがって、グリッドテーブルに必要な列は、メインテーブルにも存在する必要があります。 EAVスタイルのエンティティではないので、属性を作成する必要はありません。
はここに私のセットアップスクリプトです:
<?php
/* @var $this Nexxt_Booth_Model_Entity_Setup */
$installer = $this;
$installer->getConnection()->addColumn($installer->getTable('sales_flat_order'), 'box_num', 'varchar(255)');
$installer->getConnection()->addColumn($installer->getTable('sales_flat_order_grid'), 'box_num', 'varchar(255)');
次に、私は管理者のすべてのためのテーブルに表示するために追加の列を必要としていました。これを行うには、それぞれの関連ブロックをオーバーライドします。
<?php
class My_Module_Block_Adminhtml_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
protected function _prepareColumns()
{
$this->addColumn('box_num', array(
'header' => $this->__('Box #'),
'index' => 'box_num',
'width' => '100px'
));
$this->addColumnsOrder('box_num', 'shipping_name');
return parent::_prepareColumns();
}
}
My/Module/Block/Adminhtml/Customer/Edit/Tab/Orders.php
で同様
、及びMy/Module/Block/Adminhtml/Customer/Edit/Tab/View/Orders.php
私はこの機能を追加しました::
protected function _prepareColumns()
{
$this->addColumn('box_num', array(
'header' => $this->__('Box #'),
'index' => 'box_num',
'width' => '100px'
));
$this->addColumnsOrder('box_num', (Mage::app()->isSingleStoreMode() ? 'grand_total' : 'store_id'));
return parent::_prepareColumns();
}
最後
は、オフ終了すると、イベントsales_convert_quote_to_order
IでMy/Module/Block/Adminhtml/Sales/Order/Grid.php
で
<?xml version="1.0"?>
<config>
....
<global>
<blocks>
<adminhtml>
<rewrite>
<customer_edit_tab_view_orders>
<!-- Recent 5 orders on customer page -->
My_Module_Block_Adminhtml_Customer_Edit_Tab_View_Orders
</customer_edit_tab_view_orders>
<customer_edit_tab_orders>
<!-- All orders on customer tab -->
My_Module_Block_Adminhtml_Customer_Edit_Tab_Orders
</customer_edit_tab_orders>
<sales_order_grid>
<!-- All orders in Sales menu -->
My_Module_Block_Adminhtml_Sales_Order_Grid
</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
</global>
</config>
Iは、以下からなります新しいフィールドが設定されました。このビットは、注文が保存される前の時点でデータを追加する限り、それほど重要ではありません。
$order->setBoxNum('DATA GOES HERE');
属性を追加する必要があります。これを行うには、拡張機能のアップデートまたはセットアップスクリプトを使用するのが最善の方法です。 多くのエラーのを - - 私は私が持っていると思う順序と引用符は、平らなテーブル構造に基づいているとして、それは本当に試行錯誤の多くの後ALTER TABLE in Magento setup script without using SQL
また、あなたは両方に(フラットであるため、実際に列がある時に)新しい「属性」を追加するためにこれを使用することができ、sales_flatとsales_flat_は_grid
$installer->addAttribute('order', 'box_num', array(
'label' => 'Box Number',
'type' => 'varchar',
'grid' => true // this is important
));
あなたのインストーラがなければなりません:グリッドキーを使用するためのMage_Sales_Model_Entity_Setup。
そして、あなたはsales_flat_order_gridするsales_flat_orderから存在columndを追加している場合、あなたはsales_flat_order_gridテーブルを再同期する必要が覚えている:
In Magento, how do I populate a new column in sales_order_grid with data from sales_flat_order?
私の場合は、このために 'Mage_Sales_Model_Resource_Setup'クラスを使用しなければなりませんでした。 'Mage_Sales_Model_Entity_Setup'クラスで属性を作成することは何もしませんでした(新しいdbカラムは作成されませんでしたが、エラーもありません)。 – Eric
私は正確に同じことをやろうとしています、私は新しい列を作っていますsales_flat_order_gridでbarcode_noとGrid.phpを使用して、その列をmagento ordersグリッドで表示しました。今、magentoバックエンドのbarcode_no値をsales_flat_order_gridテーブルに保存するにはどうすればよいですか? –
@ ShujaatShaikhどのビットで問題がありますか? – clockworkgeek
いいえここで私はmagento admin backendからphpデータベースにカスタム値を挿入する方法について説明します。すべての記事は大きな助けになるでしょう! –