Индекс фильтра сетки Magento для пользовательского столбца

В сетке Magento

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

ex - select 1 as extracolumn

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

OR

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


person sushantsahay    schedule 29.08.2011    source источник


Ответы (2)


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

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

protected function _prepareCollection()
{
    ...
    $collection->addExpressionAttributeToSelect('my_column', new Zend_Db_Expr("(some expression)"), array());
    ....
}
person John Cleary    schedule 16.04.2012

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

Mage_Adminhtml_Block_Widget_Grid::_addColumnFilterToCollection

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

person Irsale-Net    schedule 29.08.2011
comment
возьмем пример защищенной функции _prepareCollection() { $collection = Mage::getModel('mymodule/mymodel')->getCollection(); // в этой таблице нет столбца состояния, поэтому я использую средство визуализации $this-›setCollection($collection); вернуть parent::_prepareCollection(); } $this-›addColumn('status', array( 'header' =› Mage::helper('module')-›__('Object'), 'filter_index' =› ????, 'renderer' = › новый Mycompany_Mymodule_Block_Adminhtml_Renderer_Status(), )); Какой filter_index следует использовать и как следует переопределить метод _addColumnFilterToCollection - person sushantsahay; 30.08.2011