在电网滤波器与自定义渲染(Filter in grid with custom renderer)

2019-08-05 12:41发布

我有带过滤器的问题我在管理网格模块中。

我的问题是:过滤与自定义渲染不工作列。

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

渲染器

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());
    }
 }

在格作者是显示精细例如“乔治·布什”,但如果我尝试写过滤(例如“卜”)过滤器归零行。 : - /

任何的想法? 谢谢。

Answer 1:

这篇文章可以帮助... http://www.atwix.com/magento/grid-filter-for-columns/

在您addColumn()调用自定义字段中,添加类似...

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

然后添加过滤方法(改变“其中()”根据需要)...

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

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


    return $this;
}


文章来源: Filter in grid with custom renderer