magento grid renderer

Índice de filtro de cuadrícula Magento para columna personalizada



grid renderer (3)

En Magento Grid

a) Mientras preparaba la colección, hice algunos cálculos en la consulta y obtuve esos valores como columna adicional.

ex - select 1 as extracolumn

Ahora, ¿cómo puedo configurar filter_index y ordenar en esta columna?

O

b) Estoy usando la representación para mostrar datos personalizados en una columna, ¿Cómo puedo configurar filter_index y clasificar en esta columna?


Probé la sugerencia de shadowice222 pero no me permitió filtrar en el campo. Miró el código central y se queja de que ''my_column'' no está definido. El uso de addExpressionAttributeToSelect hace lo mismo internamente, pero también agrega la columna.

La matriz vacía es para eludir el código que hace la sustitución de la variable, ya que trataría de lanzar el Zend_Db_Expr a una cadena. Quizás un mejor enfoque sería extender la clase para tener un método addZendDbExptToSelect.

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


mostrar cómo puede funcionar esta función:

Mage_Adminhtml_Block_Widget_Grid::_addColumnFilterToCollection

Aquí puede hacer su filtro para los datos del renderizador


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''), )); ... }