Индекс фильтра сетки Magento для пользовательского столбца - PullRequest
3 голосов
/ 29 августа 2011

In Magento Grid

a) При подготовке коллекции я провел несколько вычислений в запросе и получил эти значения в виде дополнительного столбца -

ex - select 1 as extracolumn

Теперь, как я могу установить filter_index и сортировать по этому столбцу

ИЛИ

b) Я использую рендеринг для отображения пользовательских данных в столбце, Как я могу установить filter_index исортировка по этому столбцу

Ответы [ 3 ]

2 голосов
/ 16 апреля 2012

Я попробовал предложение из shadowice222, но оно не позволило мне отфильтровать по полю. Посмотрел основной код, и он жалуется на то, что my_column не определен. Использование addExpressionAttributeToSelect делает то же самое, что и внутри, но также добавляет столбец.

Пустой массив должен обойти код, который выполняет замену переменной, поскольку он попытался бы привести Zend_Db_Expr к строке. Возможно, лучшим подходом было бы расширить класс, добавив метод addZendDbExptToSelect.

protected function _prepareCollection()
{
    ...
    $collection->addExpressionAttributeToSelect('my_column', new Zend_Db_Expr("(some expression)"), array());
    ....
}
1 голос
/ 15 марта 2012
protected function _getFlatExpressionColumn($key) {
    switch ($key) {
        case 'my_column':
            $result = new Zend_Db_Expr("(some expression)");
            break;
    }
}

protected function _prepareCollection()
{
    ...
    $col->getSelect()
        ->columns(array(
            'my_column' => $this->_getFlatExpressionColumn('my_column'),
        ))
    ;
    ...
}

protected function _prepareColumns()
{
    ...
    $this->addColumn('my_column', array(
        'header'        => $hlp->__('My Column Title'),
        'index'         => 'my_column',
        'filter_index'  => $this->_getFlatExpressionColumn('my_column'),
    ));
    ...
}
0 голосов
/ 29 августа 2011

покажите, как работает эта функция:

Mage_Adminhtml_Block_Widget_Grid::_addColumnFilterToCollection

Здесь вы можете сделать свой фильтр для данных рендерера

...