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

如何在Magento管理面板中显示网格中两个字段的总和,magento,Magento,我正在开发一个扩展,用户可以为“印花费、墨水费、, 形式成本”。目前在数据网格中,我显示一个字段的值 $this->addColumn('stamp_cost', array( 'header' => Mage::helper('imprint')->__('Stamp Cost'), 'width' => '100px', 'type' => 'price', 'currency_code' => $store

我正在开发一个扩展,用户可以为“印花费、墨水费、, 形式成本”。目前在数据网格中,我显示一个字段的值

$this->addColumn('stamp_cost', array(
    'header'    => Mage::helper('imprint')->__('Stamp Cost'),
    'width'     => '100px',
    'type'  => 'price',
    'currency_code' => $store->getBaseCurrency()->getCode(),
    'index'     => 'stamp_cost'
));
但现在我需要在一列中显示所有这些字段的总和


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

基本上有两种方法。将该字段添加到集合中并从数据库中获取数据,或者根据数据库返回的3个值在PHP中进行计算。在我看来,使用Magento系列的第一种方法太复杂了。相反,您希望使用渲染器(
Mage\u Adminhtml\u Block\u Widget\u Grid\u Column\u Renderer\u 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();
    }
}
希望有帮助

更正确的方法是“renderer”=>“company\u module/adminhtml\u renderer\u costSum”

正如@Zyava所说,正确的选择是这样。但实际上,不是“公司模块”。相反,您应该在config.xml文件中声明块时调用它

<blocks>
    <declaration>
        <class>Company_Module_Block</class>
    </declaration>
</blocks>

公司模块块
因此,在这种情况下,您应该创建“渲染器”,如下所示:


‘renderer’=>‘declaration/adminhtml\u renderer\u costSum’

更正确的方法是
‘renderer’=>‘company\u module/adminhtml\u renderer\u costSum’
。感谢@Max提供了出色的解决方案。我遵循了相同的步骤,但它只给了我致命的错误
致命的错误:在一些google之后,在第291行对E:\xampp\htdocs\mage\print\app\code\core\mage\Adminhtml\Block\Widget\Grid\Column.php中的非对象调用成员函数setColumn(),我稍微修改了您的代码“renderer”=>新公司\u模块\u块\u Adminhtml\u renderer\u CostSum(),现在工作正常。再次感谢@max使用这种方式,最后一个合计列不会显示网格上的合计值,只显示$0,因为使用render,我们如何进行合计以显示底部的合计?
<blocks>
    <declaration>
        <class>Company_Module_Block</class>
    </declaration>
</blocks>