Magento admin产品网格自定义列过滤器无法正常工作

时间:2015-04-10 06:49:13

标签: php magento-1.7 admin

我在我的magento商店管理产品网格中使用我的自定义表值与产品集合的连接集合。问题是我无法使用已内置的网格排序和过滤功能过滤或排序该自定义列。我是从grid..i中的渲染器中检索自定义值已经尝试了几乎所有来自谷歌的东西,但我仍然无法得到适当的解决方案。我也在我的列的_prepareColumns()方法中使用了filter_condition_callback但它没有意义。所以任何帮助都会很棒。

由于

1 个答案:

答案 0 :(得分:0)

我通常使用观察者向网格添加列。 See this page (german language) how to do this.

Also the full module of this tutorial is available on GitHub.

但是为了帮助你,一些源代码就可以了。您要过滤哪个自定义列?它可以有哪些值?

我是这样做的(在文件 Observer.php 中)

$grid->addColumnAfter(
    'custom_column_code', // replace by your column code
    array(
        'header'                        => 'Label of your column',
        'index'                         => 'custom_column_code', // replace by your column code
        'type'                          => 'options',
        'renderer'                      => 'YourCompany_YourModule_YourRenderer',
        'filter_condition_callback'     => array($this, '_filterHasMyCustomConditionCallback')
        'options'                       => array( //these are your filter options
            '1'     => 'Yes',
            '0'     => 'No'
        ),
    ),
    'name'
);

然后也在 Observer.php

public function _filterHasMyCustomConditionCallback($collection, $column)
{
    $value = $column->getFilter()->getValue();

    if ($value == '0')
    {
        // join custom_column LEFT (inner join fails on NULL values) and filter by NULL
        $collection->addAttributeToFilter('custom_column_code', array(['null' => true]), 'left');
    }
    else
    {
        // filter all by NOT NULL
        $collection->addFieldToFilter('custom_column_code', ['notnull' => true]);
    }

    return $this;
}