致命错误:在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',
));
任何人都可以帮我解决问题
提前谢谢
答案 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对象。