addFilterSelectWhere()
Añade un filtro de tipo select a la pestaña del ListController, con la peculiaridad de que es un filtro de filtros configurables. Es decir, cada una de las opciones de la lista del Select aplica un filtro DataBaseWhere predefinido en el controlador. Por ejemplo: una opción puede ser filtrar todos los datos que tengan false en la columna debaja, y otra opción filtrar todos los que codpais sea ESP. Otra particularidad de este filtro es que en caso de no haber seleccionado (por el usuario) una de las opciones se aplica automáticamente la primera opción.
Parámetros:
- viewName: nombre identificador de la pestaña.
- key: identificador del filtro. Generalmente el nombre del campo que quieras filtrar.
- label: etiqueta a mostrar en el filtro. Se traducirá.
- values: Array con la lista de valores a mostrar en el desplegable. Se compone de una etiqueta y un array de DataBaseWhere que se aplica cuando se seleccione esa opción.
Ejemplo: filtrar los clientes según su estado
Filtrar en la lista de clientes (vista ListCliente) los clientes según el estado designado en su ficha.
$this->addFilterSelectWhere('ListCliente', 'status', [
['label' => Tools::lang()->trans('all'), 'where' => []],
['label' => Tools::lang()->trans('only-active'), 'where' => [new DataBaseWhere('debaja', false)]],
['label' => Tools::lang()->trans('only-suspended'), 'where' => [new DataBaseWhere('debaja', true)]]
]);
Ejemplo en un EditController
En los EditController no se puede llamar directamente a $this->addFilterSelectWhere(). Hay que hacerlo a través de $this->views.
$this->views[$viewName]->addFilterSelectWhere('status', [
['label' => Tools::lang()->trans('all'), 'where' => []],
['label' => Tools::lang()->trans('only-active'), 'where' => [new DataBaseWhere('debaja', false)]],
['label' => Tools::lang()->trans('only-suspended'), 'where' => [new DataBaseWhere('debaja', true)]]
]);