我需要在销售订单adminhtml网格中添加自定义列。 由于我通过向特定increment_id请求数据从外部REST API获取该网格的数据,因此我无法使用使用magento数据库的教程来加入所需的表。
还有其他方式:
function rendering_sales_order_row_before($rowdata) {
$columnContent = $restapi->callByIncrementId($rowdata['increment_id']);
$this->addColumn("Custom Column", $columnContent);
}
(此代码应该只是说明我的目标,我知道解决方案看起来会完全不同)
是否有可能以优雅的方式在magento中实现这一目标?
编辑:我正在使用magento 1.9.2.1
答案 0 :(得分:0)
好问题。我有一个类似的问题。我通过为我的专栏使用自定义渲染器解决了这个问题。
首先添加您的销售订单网格块 XX_ModuleName_Block_Adminhtml_Order_Grid 。重写 Mage_Adminhtml_Block_Sales_Order_Grid ,扩展它并通过重写 _prepareColumns()方法添加您的列。
$this->addColumn('my_column', array(
'header' => Mage::helper('sales')->__('My Column'),
'width' => '80px',
'index' => 'my_column',
'type' => 'text',
'order' => 'x',
));
然后添加自定义渲染器( XX_ModuleName_Block_Adminhtml_Sales_Order_Grid_Widget_Renderer_MyColumn )并扩展 Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract 。
重写渲染(Varien_Object $ row)方法。在这里,您可以执行特定操作(执行api请求,以任何方式操作)并返回字符串。要构建您的请求,您希望通过param $ row 使用数据。
这应该有效:)如果您需要更多信息,请发表评论。