テーブルにカスタム属性を追加しました。sales_order_flat
この属性を のグリッドに表示しようとしていますsales_order/index
。
顧客属性でこれを正常に実行しましたが、注文データで同じことをしようとするとエラーが発生します。
<global>
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>WACI_AdminHtmlExt_Block_Sales_Order_Grid</sales_order_grid>
</rewrite>
</adminhtml>
</blocks>
<!-- etc -->
アプリ/コード/ローカル/名前空間/モジュール/ブロック/販売/注文/Grid.php
class WACI_AdminHtmlExt_Block_Sales_Order_Grid extends Mage_Adminhtml_Block_Sales_Order_Grid
{
protected function _prepareColumns()
{
$this->addColumn('dynamics_ord', array(
'header' => $this->__('Dynamics ID'),
'width' => '75px',
'index' => 'dynamics_ord',
));
$this->addColumnsOrder('dynamics_ord','entity_id');
return parent::_prepareColumns();
}
}
時々使用されること_prepareCollection
がわかりますが、他に何もないとしても、単純さのためにコレクションを修正しようとしています。setCollection
いずれにせよ、列は表示されますが、データは生成されません。(そして、ソートしようとするとページがエラーになります)。
これに関するアイデアはありますか?
アップデート
この投稿は、モジュールの現在のステータスに合わせて更新したこの SO スレッドの拡張です。つまり、 と の両方sales_flat_order
に列を追加していますsales_flat_order_grid
。
その投稿から、この属性値を設定するために行われるアクションがあります (注文が完了した後)。
この時点での私の質問は、どのようupdateGridRecords()
に機能するのですか?
=> $order->save() が呼び出されると、updateGridRecords が自動的に呼び出されるように見えます (注文が完了した後に手動で行っていること)。
他のモデルからデータを取得していないため、これを正しく理解していれば、_prepareColumns
必要なのは呼び出しだけです。
=>はい。属性が保存された後、適切に表示およびソートされます。勝つ!