我正在进行一项扩展,其中用户输入“邮票费用,墨水成本, 表格成本“。目前在数据网格中我显示一个字段的值
$this->addColumn('stamp_cost', array(
'header' => Mage::helper('imprint')->__('Stamp Cost'),
'width' => '100px',
'type' => 'price',
'currency_code' => $store->getBaseCurrency()->getCode(),
'index' => 'stamp_cost'
));
但现在我需要在一列中显示所有这些字段的总和
如何在magento管理数据网格中的一列中显示两个字段的总和?
答案 0 :(得分:2)
基本上,有两种方法可以做到这一点。将该字段添加到集合中并从数据库中获取数据,或者根据从DB返回的3个值在PHP中计算它。在我看来,使用Magento Collection的第一种方式太复杂了。相反,您想要使用渲染器(Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
)
首先,在插件的Block/Adminhtml
文件夹中,创建一个名为Renderer的新文件夹。在其中创建一个名为CostSum.php
的新文件,其中包含以下内容:
<?php
class Company_Module_Block_Adminhtml_Renderer_CostSum extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
public function render(Varien_Object $row)
{
return $row->getStampCost() + $row->getInkCost() + $row->getFormCost();
}
}
然后,在网格中,创建一个新列
$this->addColumn('cost_total', array(
'header' => Mage::helper('imprint')->__('Stamp Cost'),
//'index' => 'Im not sure this is necessary',
'type' => 'price',
'currency_code' => $store->getBaseCurrency()->getCode(),
'renderer' => new Company_Module_Block_Adminhtml_Renderer_CostSum()
));
希望有所帮助!
答案 1 :(得分:0)
更正确的方式是'渲染器&#39; =&GT; &#39; company_module / adminhtml_renderer_costSum&#39;
正如@Zyava所说,正确的选择就是这个。但实际上,不是&#39; company_module&#39;。相反,你应该在config.xml文件中声明你的块时调用它。
<blocks>
<declaration>
<class>Company_Module_Block</class>
</declaration>
</blocks>
因此,在这种情况下,您应该创建&#39;渲染器&#39;为:
&#39;渲染器&#39; =&GT; &#39;声明/ adminhtml_renderer_costSum&#39;