致命错误:在Magento中的非对象上调用成员函数setColumn()

时间:2013-04-10 06:51:22

标签: gridview magento-1.7 admin renderer

致命错误:在D:\ Program Files \ wamp \ www \ magento \ app \ code \ core \ Mage \ Adminhtml \ Block \ Widget \ Grid \ Column中的非对象上调用成员函数setColumn()。 php第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',
            ));

任何人都可以帮我解决问题

提前谢谢

3 个答案:

答案 0 :(得分:5)

可能找不到renderer class。 试试

  

'渲染器'=> 'troy_giftcard / adminhtml_giftcard_idrenderer',

答案 1 :(得分:2)

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

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

答案 2 :(得分: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对象。