2017-06-13 55 views
0

我嘗試在網格列中獲取foreach結果(我有結果,但我不知道如何將它放入每個類別ID的列中)。如何將foreach結果添加到列網格?

我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']) 
      ) 
     ); 

它就像this

回答

0

您不能直接顯示在所需的列自定義集合的var_dump的結果。您需要爲此要求使用renderer類。您需要創建一個渲染器文件夾擴展爲

Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract類。

class Namespace_Module_Block_Product extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract 
{ 

public function render(Varien_Object $row) 
{ 
$productId = $row->getData($this->getColumn()->getIndex()); 
$product = Mage::getModel('catalog/product')->load($productId); 

$value = '<img src="">'; 
if($product->getImage()!= 'noselection') 
{ 
    $value='<img src="' . $product->getImageUrl() . '" width="100" height="100" />'; 
} 

return $value; 
} 
} 

在Grid列中需要使用renderer參數調用此類,如下所示。

$this->addColumn(
      'product_id', 
      [ 
       'header' => __('Product Name'), 
       'sortable' => true, 
       'index' => 'product_id', 
       'renderer' => 'Namespace\Module\Block\Product' 

      ] 
     ); 

您也可以將類別ID傳遞給此特定的渲染器類。