Magento:在销售订单网格中添加列而不加入


Magento: Add column in sales order grid without join

我需要在销售订单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 1.9.2.1

好问题。我也有类似的问题。我通过为我的专栏使用自定义渲染器解决了这个问题。

首先添加您的销售订单网格块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_Gridge_Widget_Render_MyColumn),并扩展Mage_Adminhtml_Block_Widget_Grid_Column_renderer_Abstract

覆盖渲染(Varien_Object$row)方法。在这里,您可以执行特定的操作(执行api请求,以任何方式进行操作)并返回字符串。要构建您的请求,您需要使用param$row的数据。

这应该有效:)如果你需要更多信息,请发表评论。