当我尝试在自定义模块中的管理网格中显示图像时,它显示错误,如
Fatal error: Call to a member function setColumn() on a non-object in D:\Program Files\wamp\www\magento\app\code\core\Mage\Adminhtml\Block\Widget\Grid\Column.php on line 291
答案 0 :(得分:2)
您必须在Adminhtml Folder Say Renderer中创建一个Block File,并且您可以创建一个文件调用Image.php
在该文件中写一个函数
public function render(Varien_Object $row){
$mediaurl=Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA);
$value = $row->getData($this->getColumn()->getIndex());
return '<p style="text-align:center;padding-top:10px;"><img src="'.$mediaurl.DS.$value.'" style="width:100px;height:200px;text-align:center;"/></p>';
}
在grid.php中调用此函数
$this->addColumn("thumbnailimage", array(
"header" => Mage::helper("modulename")->__("Image"),
"index" => "thumbnailimage",
"renderer" =>"Companyname_Modulename_Block_Adminhtml_Renderer_Image",
));
答案 1 :(得分:1)
回答这个问题是检查_prepareColumns()函数中渲染类的路径。
例如,在我的例子中,render类的路径是错误的。检查以下代码:
$this->addColumn('img', array(
'header' => 'Image',
'align' => 'left',
'index' => 'img',
'width' => '70',
'renderer' => 'demo/adminhtml_grid_renderer_img'
));
此处,renderer属性保存渲染类的路径,进行查看。如果此时路径错误,则会显示此类错误。