以前の作品では、他のデータを表示するために、MagentoAdminの注文グリッドをオーバーライドしました。だから私はそうするためのモジュールを作成しました。新しいブロックを作成し、config.xmlでオーバーライドを報告しました:
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>
Company_Module_Block_Sales_Order_Grid
</sales_order_grid>
</rewrite>
</adminhtml>
</block>
その後、新しいデータを取得して保存するための新しいモジュールを作成しました。それらをグリッドに表示したいと思います。これらのデータはカスタムテーブルから取得され、グリッドではまだ使用されていません。また、レンダラーを使用してそれらを表示する必要があります。
これらの2つのモジュールを相互に依存させたくないので、新しいデータをデフォルトのグリッドと同じようにオーバーライドされたグリッドに表示する必要があります。したがって、(可能であれば)最初のモジュールが2番目のモジュールによって他にオーバーライドされるのを避けたいと思います。
インターネットで検索したところ、次の興味深い記事が見つかりました:http://www.ecomdev.org/2010/07/27/adding-order-attribute-to-orders-grid-in-magento-1-4-1。 html
$resource->addVirtualGridColumn(
'customer_telephone',
'sales/order_address',
array('billing_address_id' => 'entity_id'),
'telephone'
);
このアプローチは私にとって完璧です。最初のモジュールが無効になっている場合でも、2番目のモジュールのデータはデフォルトのグリッドに表示され、2番目のモジュールが無効になっている場合でも、グリッドはオーバーライドされます。
完璧だったかもしれませんが、addVirtualGridColumnメソッドを使用してレンダラーを使用することはできないようです。
だから私の質問は:仮想列でレンダラーを使用する方法はありますか?そうでない場合でも、グリッドをオーバーライドせずに「レンダリングされた」列をエレガントに追加する方法はありますか?
私の問題の説明が明確になり、解決策があることを願っています。ご協力いただきありがとうございます。