【问题标题】:Magento: Add column in sales order grid without joinMagento:在销售订单网格中添加列而不加入
【发布时间】:2015-12-17 13:44:09
【问题描述】:

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

【问题讨论】:

标签: php magento


【解决方案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_Grid_Widget_Renderer_MyColumn) 并扩展 Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract

重写 render(Varien_Object $row) 方法。在这里您可以执行您的特定操作(执行您的 api 请求,以您想要的任何方式进行操作)并返回字符串。要构建您的请求,您希望通过参数 $row 使用数据。

应该可以 :) 如果您需要更多信息,请发表评论。

【讨论】:

  • 谢谢,这对我有帮助。与其他答案magento.stackexchange.com/questions/94169/… 一起,我设法创建了自己的渲染器。
  • 很高兴它有帮助 :) 正如我从您的其他问题中看到的那样,您尝试避免重写核心网格。有一个选项,但请创建一个新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
相关资源
最近更新 更多