Cómo usar el widget TreeFilter
Cuando queremos añadir un nuevo filtro de tipo TreeFilter o modificar un filtro ya existente por un filtro TreeFilter a una vista list debemos tener en cuenta si ya existe el controlador de la vista o si será un controlador nuevo.
Extensiones
Si la vista y su controlador ya existen debemos utilizar el sistema de Extensiones de Facturascripts (https://facturascripts.com/publicaciones/las-extensiones-334) para añadir el filtro.
public function createViews(): Closure
{
return function () {
if (isset($this->views['ListProducto'])) {
$view = $this->views['ListProducto']; // Obtenemos la vista para su modificación
// Reemplazamos el filtro existente por el TreeFilter
$view->filters['codfamilia'] = new TreeFilter(
'codfamilia',
'codfamilia',
'family',
'familias',
'madre',
'codfamilia',
'descripcion',
[]
);
// Añadimos un nuevo filtro TreeFilter
$view->filters['newFilter'] = new TreeFilter(
'key',
'field',
'label',
'source',
'field key',
'source field key',
'source field description',
[]
);
}
};
}
Nuevo Controlador
Cuando el filtro deseamos añadirlo a un nuevo controlador, normalmente de un nuevo plugin, debemos añadirlo directamente mediante la creación del objeto filtro y asignarlo a la lista de filtros. Esto es así porque el controlador ListController de los ExtendedController no dispone de un método implícito para añadir este tipo de filtro.
public function createViews()
{
$newView = $this->addView('viewName', 'model', 'label', 'icon');
$view->filters['newFilter'] = new TreeFilter(
'key',
'field',
'label',
'source',
'field key',
'source field key',
'source field description',
[]
);
}
};
}