我在 Magento 1.7.0.0 的订单网格中添加自定义列时遇到了这个问题,我希望你能在这里帮我一把。基本上我遵循了这个指南http://www.atwix.com/magento/customize-orders-grid/解释了我必须制作一个本地版本/app/code/core/Mage/Adminhtml/Block/Sales/Order/Grid.php
并进行一些更改才能拥有我想要的额外列。按照上述指南,它说我必须编辑函数_prepareCollection()
来添加这一行(指定我想在数组中提取的字段)
$collection->getSelect()->join('magento_sales_flat_order_address', 'main_table.entity_id = magento_sales_flat_order_address.parent_id',array('telephone', 'email'));
前
return parent::_prepareCollection();
并像这样添加两列_prepareColumns()
:
$this->addColumn('telephone', array(
'header' => Mage::helper('sales')->__('Telephone'),
'index' => 'telephone',
));
$this->addColumn('email', array(
'header' => Mage::helper('sales')->__('Email'),
'index' => 'email',
));
就是这样,显然......或者可能不是,因为当我这样做时它会引发以下错误:
Item (Mage_Sales_Model_Order) with the same id "XXXX" already exist
根据下面的评论,解决方案是在_prepareCollection
before中添加以下行$this->setCollection($collection)
:
$collection->getSelect()->group('main_table.entity_id');
添加该行后,订单网格现在像我想要的那样显示电子邮件和电话列,但结果分页停止工作,它只显示最近的 20 个,并显示“Pages 1 out of 1”,“2 个记录发现”在上面。我似乎无法弄清楚为什么会发生这种情况,而且我看到的每条评论都没有超出上面的最后一条指令。什么可能是这个问题的原因?
我认为它可以被复制,因为我没有对这个模型进行任何其他修改。