ListController

Este controlador es específico para listados y permite gestionar una o varias pestañas, cada una con un listado de los registros de un modelo. Además, se basa en archivos de XMLView para definir qué columnas mostrar y cómo.

Ejemplo de ListController

Ejemplo: ListProject.php

Continuando con el ejemplo de MyNewProject, creamos un listado con los proyectos:

<?php
namespace FacturaScripts\Plugins\MyNewPlugin\Controller;

use FacturaScripts\Core\Lib\ExtendedController\ListController;

class ListProject extends ListController
{
    public function getPageData(): array
    {
        $page = parent::getPageData();
        $page['title'] = 'projects';
        $page['menu'] = 'sales';
        $page['icon'] = 'fas fa-search';
        return $page;
    }

    protected function createViews()
    {
        // Creamos cada pestaña en una función separada, por comodidad
        $this->createViewsProject();
    }

    protected function createViewsProject(string $viewName = 'ListProject'): void
    {
        $this->addView($viewName, 'Project')
            ->addOrderBy(['name'], 'name')
            ->addSearchFields(['name']);
    }
}

createViews()

En esta función se deben crear todas las pestañas mediante addView() y definir sus campos de búsqueda, filtros y ordenación.

addView()

Este método añade una nueva pestaña para listar los registros de un modelo y sus parámetros son:

  • viewName: nombre identificador de la pestaña, que debe coincidir con el del archivo de XMLView.
  • modelName: nombre del modelo a utilizar.
  • viewTitle: título de la pestaña, que será traducido.
  • icon: icono a usar en la pestaña.

Columnas a mostrar

El controlador buscará un archivo XMLView con el mismo nombre que la pestaña (viewName). Este archivo indica qué columnas se deben mostrar y cómo.

addColor()

Se pueden añadir colores a las filas de los listados desde el controlador. Para más información, visite "Añadir colores desde el controlador".

Desde ListController:

$this->addColor($viewName, $value, $status->idestado, $color, $title);

La función addColor() tiene los siguientes parámetros:

  • $fieldName: Nombre del campo donde se hace la comprobación, que debe ser igual a fieldname del XML.
  • $value: Valor a comprobar; el fieldName se verificará con este valor.
  • $color: Color que se mostrará en la fila.
  • $title: Texto que se mostrará en la leyenda de los colores.

addSearchFields()

Método para indicar sobre qué campos se desea que busque el buscador integrado de la pestaña.

  • viewName: nombre identificador de la pestaña.
  • fields: un array con las columnas sobre las que se desea buscar.
$this->addSearchFields($viewName, ['name', 'description']);

// Opción alternativa
$this->listView($viewName)->addSearchFields(['name', 'description']);

addOrderBy()

Método para añadir opciones de ordenación en la pestaña.

  • viewName: nombre identificador de la pestaña.
  • fields: campos de ordenación (cualquier expresión aceptada por la cláusula ORDER BY de SQL).
  • label: etiqueta o título de esta opción de ordenación. Si no se indica, se utilizará el nombre del primer campo (fields).
  • default: un entero entre 0 y 2.

Consideraciones:

  • Al añadir una ordenación siempre se deben incluir dos opciones: una ascendente y otra descendente.
  • Para establecer una ordenación por defecto, se pueden usar los valores 1 para ascendente y 2 para descendente.

Ejemplos de ordenación:

/* Epígrafes */
$this->addOrderBy('ListEpigrafe', ['descripcion'], 'description')
    ->addOrderBy(['CONCAT(codepigrafe, codejercicio)'], 'code', 2)
    ->addOrderBy(['codejercicio']);

/* Clientes */
$this->addOrderBy('ListCliente', ['codcliente'], 'code')
    ->addOrderBy(['nombre'], 'name', 1)
    ->addOrderBy(['fecha'], 'date')
    ->addOrderBy(['codgrupo', 'codcliente'], 'group');

/* Grupos */
$this->addOrderBy('ListGrupoClientes', ['codgrupo'], 'code')
    ->addOrderBy(['nombre'], 'name', 1);

Personalización con Settings

Todas las vistas usadas en los controladores extendidos disponen de la propiedad settings, que permite personalizar ciertos aspectos de la vista. Use el método setSettings() para modificar estas configuraciones.

Añadir filtros al listado

El controlador ListController integra un sistema de filtrado de datos que permite personalizar de manera sencilla las opciones de filtrado que se presentan al usuario. Cada tipo de filtro requiere de una parametrización propia para su funcionamiento, como el nombre de la vista a la que se añade, el campo sobre el que aplicar el filtro, la etiqueta, entre otros.

Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.
Copyright (c) 2013-2025 FacturaScripts
0.49818s

Soporte