I try to get the foreach result in a grid column (I have the result but I don't how to put it into the column for each category id).
My grid.php
public function _prepareCollection()
{
$subcategories = Mage::getModel('catalog/category')
->setStoreId(Mage::app()->getStore()->getId())
->getCollection()
->addAttributeToSelect('*')
->setOrder('parent_id', 'ASC');
$categories = array();
foreach ($subcategories as $category){
//do something with $category and put it in Route column
if ($category['level'] > 1) {
$categories[$category['entity_id']] = array('category_route' => $category['level'] == 2 ? $category['name'] : $categories[$category['parent_id']]['category_route'] ." -> ". $category['name']);
}
var_dump($categories[$category['entity_id']]);
}
$collection = Mage::getModel('thorleif/commerciaux')->getCollection();
$collection->addFieldToFilter('entity_id',array("nin"=>array(1,2)));
$this->setCollection($collection);
return parent::_prepareCollection();
}
public function _prepareColumns()
{
$this->addColumn('entity_id',
array(
'header' => 'ID',
'align' => 'left',
'width' => '10%',
'index' => 'entity_id'
)
);
$this->addColumn('name',
array(
'header' => 'Category Name',
'align' => 'left',
'index' => 'name'
)
);
$this->addColumn('route',
array(
'header' => 'Route',
'align' => 'left',
'index' => array($category['name'] .'>'. $category['name'])
)
);
The result of the var_dump it's like this
You can't directly show your custom collection in the required column. You need to use
rendererclass for this requirement. You need to create a renderer folder extendsMage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstractclass.In the Grid column to need to call this class by using renderer parameter as shown below.
You can also pass the category ID, to this specific renderer class.