4

致命错误:在 D:\Program Files\wamp\www\magento\app\code\core\Mage\Adminhtml\Block\Widget\Grid\Column.php 中的非对象上调用成员函数 setColumn() 在线291

在管理网格部分,我使用了此列的详细信息

protected function _prepareColumns()
{
    $this->addColumn('giftcard_id', 
        array(
            'header'    => 'ID',
            'align'        => 'right',
            'width'        => '50px',
            'index'        => 'giftcard_id',
        ));

    $this->addColumn('giftcard_id', 
        array(
            'header'    => 'Detail',
            'align'        => 'center',
            'width'        => '150px',
            'renderer'  => 'giftcard/adminhtml_giftcard_idrenderer',
            'index'        => 'giftcard_id',
        ));



    $this->addColumn('created_time', array(
        'header'    => 'Creation Time',
        'align'     => 'left',
        'width'     => '120px',
        'type'      => 'date',
        'default'   => '--',
        'index'     => 'created_time',
    ));

    $this->addColumn('update_time', array(
        'header'    => 'Update Time',
        'align'     => 'left',
        'width'     => '120px',
        'type'      => 'date',
        'default'   => '--',
        'index'     => 'update_time',
    ));   


    $this->addColumn('status', array(

        'header'    => 'Status',
        'align'     => 'left',
        'width'     => '80px',
        'index'     => 'status',
        'type'      => 'options',
        'options'   => array(
            1 => 'Active',
            0 => 'Inactive',
        ),
    ));
    $this->addColumn('action',
            array(
                'header'    => Mage::helper('giftcard')->__('Action'),
                'width'     => '50px',
                'type'      => 'action',
                'getter'     => 'getId',
                'actions'   => array(
                    array(
                        'caption' => Mage::helper('giftcard')->__('Delete'),
                        'url'     => array('base'=>'*/*/delete'),
                        'field'   => 'id'
                    )
                ),
                'filter'    => false,
                'sortable'  => false,
                'is_system' => true,
    ));

    return parent::_prepareColumns();
}

在giftcard/adminhtml_giftcard_idrenderer 我使用了以下代码

class Troy_Giftcard_Block_Adminhtml_Giftcard_Idrenderer extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
    public function render(Varien_Object $row)
    {
        $value =  $row->getData($this->getColumn()->getIndex());
        $html = 'testing-'.$value .'-testing';
        return $html;        

    }
}

当我使用

$this->addColumn('giftcard_id', 
            array(
                'header'    => 'Detail',
                'align'        => 'center',
                'width'        => '150px',
                'renderer'  => 'giftcard/adminhtml_giftcard_idrenderer',
                'index'        => 'giftcard_id',
            ));

任何人都可以帮助我如何解决它

提前谢谢

4

3 回答 3

5

可能renderer class没有找到。尝试

'renderer' => 'troy_giftcard/adminhtml_giftcard_idrenderer',

于 2013-04-12T11:55:37.293 回答
2

这是由于 Magento 为渲染器类生成异常作为它的无效块。

例如:'renderer' => 'Custom_Sales_Block_Adminhtml_Report_Sales_Grid_Column_Renderer_Status' 由于某些路径不匹配或未找到布局问题,上述类的平均值是无效块。

于 2015-06-09T11:44:49.990 回答
0

我的问题出在自定义列渲染器中。

我允许在“描述”属性中使用 HTML 标记。这很好,但我添加了一个使用截断的“描述”值的列。这会打开一个 HTML 元素标记,但会截断结束标记。从而破坏了我的目录产品网格。

我在 AdminHtml 目录产品网格中看到的 JavaScript 错误是:

productGridJsObject not defined

我在启用/禁用我的模块时看到的 PHP 错误是:

Fatal error: Call to a member function setColumn() on a non-object in /home/www-data/magento/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Column.php on line 291

分辨率: 在我的自定义渲染器中;用 PHP htmlentities() 处理我截断的“描述”值,因此开始标记不会被视为 DOM 对象。

于 2016-08-02T21:36:05.970 回答