1

以前の作品では、他のデータを表示するために、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メソッドを使用してレンダラーを使用することはできないようです。

だから私の質問は:仮想列でレンダラーを使用する方法はありますか?そうでない場合でも、グリッドをオーバーライドせずに「レンダリングされた」列をエレガントに追加する方法はありますか?

私の問題の説明が明確になり、解決策があることを願っています。ご協力いただきありがとうございます。

4

1 に答える 1

1

XML を使用できます。

<add_order_grid_column_handle>
    <reference name="sales_order.grid">
       <action method="addColumnAfter">
         <columnId>customer_telephone</columnId>
         <arguments module="" translate="header">
            <header>Customer telephone</header>
            <index>custom_telephone</index>
            <type>tex</type>
            <sortable>true</sortable>
            <renderer>YOUR_CUSTOM_RENDERER_CLASS</renderer>
          </arguments>
          <after>....</after>
        </action>
    </reference>
</add_order_grid_column_handle>
于 2012-12-24T08:01:24.123 に答える