我问了一个类似的问题,但我没有提供足够的细节而我没有答案,所以我会再试一次。
主要任务是将字段添加到CSV文件中,该文件是在magento admin sales->发票下导出的。我找到了要编辑的主文件:
app/code/core/Mage/Adminhtml/Block/Sales/Invoice/Grid.php
这样可以选择addColumn:
$this->addColumn('increment_id', array(
'header' => Mage::helper('sales')->__('Invoice #'),
'index' => 'increment_id',
'type' => 'text',
));
现在,当我尝试添加新列时,我将索引更改为相应的数据库字段,例如说“税额”。唯一的问题是这个新值不在我的Magento集合中,因此它只是填充表中的空列。
我对Magento很陌生,所以我不完全理解Magento集合是如何工作的,或者我如何在grid.php的范围内访问它。有人可以给我一些关于如何添加到收藏品的方向吗?
我真的被困住了,并希望得到帮助。
答案 0 :(得分:4)
您基本上需要编辑资源模型以包含要包含的字段。您可以在代码中编辑资源,我不知道您使用的是哪个版本但在Grid.php文件中您会看到_prepareCollection找到看起来像的代码,
$collection = Mage::getResourceModel('sales/order_invoice_collection')
->addAttributeToSelect('order_id')
->addAttributeToSelect('increment_id')
->addAttributeToSelect('created_at')
->addAttributeToSelect('state')
->addAttributeToSelect('grand_total') ...and so on!
添加行
->addAttributeToSelect('tax_amount')
到该列表,您应该可以使用
$this->addColumn('tax_amount', array(
'header' => Mage::helper('sales')->__('Tax'),
'index' => 'tax_amount',
'type' => 'number',
));
这与我离开我的开发机器一样没有测试,也没有Mage可以用,但这应该起作用或者至少指向正确的方向。
编辑:
如果你没有尝试替换整个_prepareCollection
protected function _prepareCollection()
{
$collection = Mage::getResourceModel('sales/order_invoice_collection')
->addAttributeToSelect('order_id')
->addAttributeToSelect('increment_id')
->addAttributeToSelect('created_at')
->addAttributeToSelect('state')
->addAttributeToSelect('grand_total')
->addAttributeToSelect('tax_amount')
->addAttributeToSelect('order_currency_code')
->joinAttribute('billing_firstname', 'order_address/firstname', 'billing_address_id', null, 'left')
->joinAttribute('billing_lastname', 'order_address/lastname', 'billing_address_id', null, 'left')
->joinAttribute('order_increment_id', 'order/increment_id', 'order_id', null, 'left')
->joinAttribute('order_created_at', 'order/created_at', 'order_id', null, 'left');
$this->setCollection($collection);
return parent::_prepareCollection();
}
这是未经测试的,从内存中这是1.3范围的magento中的_prepareCollection所以它有点旧,但很确定它应该有效。