如何在Magento管理面板中显示网格中两个字段的总和

时间:2011-10-30 07:37:34

标签: magento

我正在进行一项扩展,其中用户输入“邮票费用,墨水成本, 表格成本“。目前在数据网格中我显示一个字段的值

$this->addColumn('stamp_cost', array(
    'header'    => Mage::helper('imprint')->__('Stamp Cost'),
    'width'     => '100px',
    'type'  => 'price',
    'currency_code' => $store->getBaseCurrency()->getCode(),
    'index'     => 'stamp_cost'
));

但现在我需要在一列中显示所有这些字段的总和

如何在magento管理数据网格中的一列中显示两个字段的总和?

2 个答案:

答案 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;