2013-01-04 14 views
6

Modemimde yönetici kılavuzunda filtre ile ilgili bir sorunum var.Özel oluşturucu ile ızgarada süzme

Sorunum: Özel oluşturulmamış sütunları filtrelemek işe yaramıyor.

public function _prepareColumns() 
    { 
     $this->addColumn('entity_id', array(
      'header' => 'ID', 
      'index' => 'entity_id', 
      'width' => '30px' 
     )); 
     $this->addColumn('author', array(
      'header' => 'Author', 
      'index' => 'author', 
      'renderer' => 'Test_Block_Adminhtml_Vj_Renderer_Author' 
     )); 

oluşturucu ızgara

class Test_Block_Adminhtml_Vj_Renderer_Author extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract 
{ 
    public function render(Varien_Object $row) 
    { 
     $value = $row->getData($this->getColumn()->getIndex()); 
     $autor = Mage::getModel('test/test')->load($value); 
     return ($author->getName() . ' ' . $author->getSurname()); 
    } 
} 

Eser, örneğin, 'Bush' için iyi gösteren olduğu, ama filtre, geri dönüş sıfır sıralı (örneğin 'Bu' için) filtre yazma deneyin. : -/

Herhangi bir fikrin var mı? Thx.

cevap

14

Bu makale yardımcı olabilir ... senin addColumn On http://www.atwix.com/magento/grid-filter-for-columns/

() değişen (

'filter_condition_callback' => array($this, '_myCustomFilter'),

Ardından filtre yöntemi eklemek ... gibi bir şey eklemek, özel alan için çağrı "burada()" gerektiği gibi) ...

protected function _myCustomFilter($collection, $column) 
{ 
    if (!$value = $column->getFilter()->getValue()) { 
     return $this; 
    } 

    $this->getCollection()->getSelect()->where(
     "my_field like ?" 
    , "%$value%"); 


    return $this; 
} 
+0

Ben nitelik kimliği özelliğini kullanmak koleksiyonunu filtrelemek çalışıyorumbu gibi tek değer için çalışıyor $ this-> getCollection() -> getSelect() -> burada ( "main_table.attribute_id =?" , 173, 226); ancak çoklu kimlikleri filtrelemek istiyorum ve bunu denediğimde. $ this-> getCollection() -> getSelect() -> nerede ( "main_table.attribute_id IN?" , dizi (173, 226)); onun bir hata vermesi SQL sözdiziminde bir hata var –