Reputation: 41
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
in admin grid section i used this columns details
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();
}
in giftcard/adminhtml_giftcard_idrenderer i used the following code
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;
}
}
I got this error when i use the
$this->addColumn('giftcard_id',
array(
'header' => 'Detail',
'align' => 'center',
'width' => '150px',
'renderer' => 'giftcard/adminhtml_giftcard_idrenderer',
'index' => 'giftcard_id',
));
any one can help me how to fix it
Advance Thanks
Upvotes: 4
Views: 6809
Reputation: 2594
My problem was inside a custom column renderer.
I allowed HTML tags in the 'description' attribute. This would be fine but I added a column using the 'description' value truncated. This opened an HTML element tag but truncated the closing tag. Thus ruining my Catalog Product Grid.
JavaScript Errors I saw in the AdminHtml Catalog Product Grid were:
productGridJsObject not defined
PHP Errors I saw when enabling/disabling my module were:
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
Resolution: Was in my custom renderer; to treat my truncated 'description' value with PHP htmlentities() so the opening tag would not be treated as a DOM object.
Upvotes: 0
Reputation: 365
It's due to Magento generates exception for renderer class as Invalid block for it.
Ex : 'renderer' => 'Custom_Sales_Block_Adminhtml_Report_Sales_Grid_Column_Renderer_Status'
Mean above class is not valid block due to some path mismatch or layout not found issue.
Upvotes: 2
Reputation: 141
probably the renderer class
not found.
try with
'renderer' => 'troy_giftcard/adminhtml_giftcard_idrenderer',
Upvotes: 5