在以前的作品中,我覆盖了 Magento Admin 中的 Order 网格,以显示其他数据。所以我创建了一个模块来做到这一点。我编写了新块并在 config.xml 中报告了覆盖:
<blocks>
<adminhtml>
<rewrite>
<sales_order_grid>
Company_Module_Block_Sales_Order_Grid
</sales_order_grid>
</rewrite>
</adminhtml>
</block>
之后,我创建了一个新模块来获取和保存新数据。我现在想在网格上显示它们。这些数据来自自定义表,尚未在网格中使用。我还必须使用渲染器来显示它们。
我不想让这两个模块相互依赖,新数据必须像默认的一样显示在覆盖的网格上。所以我想(如果可能的话)避免第二个模块对第一个模块的其他覆盖。
通过在互联网上搜索,我发现了这篇有趣的文章: 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'
);
这种方法对我来说是完美的:如果第一个模块被禁用,第二个模块的数据仍然显示在默认网格上,如果第二个模块被禁用,网格仍然被覆盖。
它可能是完美的,但似乎您不能通过使用 addVirtualGridColumn 方法来使用渲染器。
所以我的问题是:有没有办法在虚拟列上使用渲染器?如果没有,是否还有一种方法可以优雅地添加“渲染”列而不覆盖网格?
希望我已经清楚地解释了我的问题,并希望有一个解决方案。谢谢你的帮助。