fs_list_controller

Este es un controlador extendido para facilitar el desarrollo. Permite mostrar uno o varios listados de tablas en pestañas. Incluye buscador, paginación, opciones de ordenación y filtros. No necesita definir una vista (incluye la suya propia).

Ejemplo (mi_listado.php)

En este listado vamos a mostrar una pestaña 'historial' con el contenido de la tabla fs_logs, y una pestaña 'Artículos' con el contenido de la tabla articulos.

<?php

class mi_listado extends fs_list_controller
{
    public function __construct()
    {
        parent::__construct(__CLASS__, 'mi listado', 'ventas');
    }

    protected function create_tabs()
    {
        /// pestaña historial
        $this->add_tab('logs', 'Historal', 'fs_logs', 'fa-book');
        $this->add_search_columns('logs', ['usuario', 'tipo', 'detalle', 'ip']);
        $this->add_sort_option('logs', ['fecha'], 2);

        /// filtros
        $tipos = $this->sql_distinct('fs_logs', 'tipo');
        $this->add_filter_select('logs', 'tipo', 'tipo', $tipos);
        $this->add_filter_date('logs', 'fecha', 'desde', '>=');
        $this->add_filter_date('logs', 'fecha', 'hasta', '<=');
        $this->add_filter_checkbox('logs', 'alerta', 'alerta');

        /// decoración
        $this->decoration->add_column('logs', 'fecha', 'date');
        $this->decoration->add_column('logs', 'alerta', 'bool');
        $this->decoration->add_column('logs', 'usuario');
        $this->decoration->add_column('logs', 'tipo');
        $this->decoration->add_column('logs', 'detalle');
        $this->decoration->add_column('logs', 'ip');

        /// pestaña articulos
        $this->add_tab('articulos', 'Articulos', 'articulos', 'fa-cubes');
        $this->add_search_columns('articulos', ['referencia','descripcion']);
        $this->add_sort_option('articulos', ['referencia'], 1);

        /// decoración
        $this->decoration->add_column('articulos', 'referencia');
        $this->decoration->add_column('articulos', 'descripcion');
        $this->decoration->add_row_url('articulos', 'index.php?page=ventas_articulo&ref=', 'referencia');
    }
}

create_tabs()

En esta función es donde debes añadir las pestañas y sus opciones.

Añadir pestaña:

$this->add_tab($tab_name, $title, $table_name, $icon);

Esta función añade una nueva pestaña al listado, con el nombre interno $tab_name, el título $title y el icono $icon. El contenido lo leera de la tabla $table_name, aunque tendremos que usar $this->decoration->add_column() para indicar las columnas a mostrar.

Añadir columnas sobre las que buscar:

$this->add_search_columns($tab_name, $columns);

Indica al controlador cuales son las columnas de la tabla sobre las que debe buscar cuando el usuario busque algo. $columns debe ser una array, por ejemplo ['usuario','tipo'].

Añadir opciones de ordenación:

$this->add_sort_option($tab_name, $columns, $option = 0);

Con esta función añadimos dos opciones al selector de ordenación. Una ascendente y una descendente. Si por ejemplo añadimos las columnas ['fecha', 'hora'], estaremos añadiendo fecha ASC, hora ASC y fecha DESC, hora DESC como opciones al ORDER BY generado.

$option permite estos valores:

  • 0: nada.
  • 1: fecha ASC, hora ASC como opción predeterminada.
  • 2: fecha DESC, hora DESC como opción predeterminada.

Añadir filtro checkbox:

$this->add_filter_checkbox($tab_name, $col_name, $label, $operation = '=', $match_value = true)

Añadimos un filtro checkbox al buscador de la pestaña $tab_name. Al marcar, se añadirá esto al SQL: AND $colname = true.

Añadir filtro de fecha:

$this->add_filter_date($tab_name, $col_name, $label, $operation);

Añadimos un filtro de fechas al buscador de la pestaña $tab_name. Al marcar, se añadirá esto al SQL: AND $colname $operation $value. Si por ejemplo queremos mostrar todos los resultados con una fecha igual o superior a la que indique el usuario, esto sería así:

$this->add_filter_date('logs', 'fecha', 'desde', '>=');

Añadir filtro select:

$this->add_filter_select($tab_name, $col_name, $label, $values);

Añadimos un filtro select al buscador. Se rellenará con $values y si el usuario selecciona uno, se mostrarán solamente los resultados con ese valor.

Obtener valores rápidamente de una tabla: Podemos usar la función $this->sql_distinct($tabla, $columna)

$values = $this->sql_distinct('fs_logs', 'tipo');

Añadir columnas a mostrar en el listado:

$this->decoration->add_column($tab_name, $col_name, $type = 'string', $title = '', $class = '', $base_url = '');
  • $tab_name: nombre de la pestaña.
  • $col_name: nombre de la columna a mostrar.
  • $type: por defecto string. Tipos soportados: string, bool, number, money, date y datetime.
  • $title: título de la columna. Por defecto se usa el nombre de la columna.
  • $class: para añadir alguna clase css a la columna. Ejemplos:
    • text-right: alinear a la derecha.
    • text-left: alinear a la izquierda.
    • text-center: texto centrado.
  • $base_url: para indicar que quieres que se muestre esa columna con enlaces. Estos enlaces se generan sumando $base_url con el valor de la columna.

Clic en la línea:

Si deseas que al hacer clic en una línea de los resultados se redirija a una url, debes usar esta función para indicar la url:

$this->decoration->add_row_url($tab_name, $base_url, $col_name);
  • $tab_name: el nombre de la pestaña.
  • $base_url: el principio de la url a construir.
  • $col_name: la columna, cuyo valor se añadirá a $base_url para formar la url final.

Colorear líneas:

Para colorear las líneas en función del contenido podemos usar la función add_row_option() del decorador.

$this->decoration->add_row_option($tab_name, $col_name, $value, $class);

Un ejemplo de añadir varias opciones de colores sería este:

$this->decoration->add_row_option('logs', 'alerta', true, 'danger');
$this->decoration->add_row_option('logs', 'tipo', 'error', 'danger');
$this->decoration->add_row_option('logs', 'tipo', 'msg', 'success');

En este caso le estamos diciendo al decorador que si la línea tiene el valor true en la columna alerta, añada la clase danger (que pinta de rojo). Si la columna tipo tiene el valor 'error', también pinta de rojo. Y si la columna tipo tiene el valor 'msg', entonces pinta de verde (success).

Añadir botones:

$this->add_button($tab_name, $label, $link = '#', $icon = '', $class = 'btn-default', $id = '', $target = '');

Añade un botón con el texto $label y el icono $icon. Al pulsar el botón se redirige al usuario a la url $link.

Opciones avanzadas

Podemos personalizar aun más este controlador cambiando las plantillas o incluso el propio decorador.

Cargar plantilla personalizada

Este controlador dispone de 3 plantillas: la general ($this->template), la de la parte superior ($this->template_top) y la de la parte inferior ($this->template_bottom). Son propiedades públicas que podemos modificar:

$this->template_top = 'mi_plantilla_top';

Añadir filtro personalidado

Podemos crear nuestros propios filtros, simplemente tienen que heredar de fs_list_filter. Para usarlos en el controlador, los añadiremos con la función add_filter().

$filter = new my_custom_filter();
$this->add_filter('my_tab', $filter);

Sustituir el decorador por uno personalizado

Podemos incluso sustituir el decorador entero por uno propio. Este decorador propio debe heredar de la clase fs_list_decoration.

$this->decoration = new custom_list_decoration($this->decoration);

Le pasamos el decorador antiguo como parámetro al constructor para que copie los valores de configuración.


Siguiente

Necesita identificarse para continuar con esta acción. Haga clic en iniciar sesión o cree una cuenta.

Iniciar sesión

Patrocinadores

FacturaScripts avanza más rápido gracias al apoyo financiero de los patrocinadores, que contribuyen a que podamos dedicar más tiempo al desarrollo, testeo y documentación. Usted también puede poner su granito de arena y convertirse en patrocinador ;-)

ORO
elurk_3992
ORO
alexis_8932
ORO
manel_11440
ORO
jserna_9199
ORO
mromero_1531
ORO
cia_15337
PLATA
s3rtec_4534
PLATA
oscar_10546
PLATA
nsat.pedidos_1235
PLATA
bombelec_12337
PLATA
estrategicos_11919
BRONCE
rexmaris_12857
BRONCE
ldardon_11876
BRONCE
flecamas_12738
BRONCE
jlgonzalezdiaz_12316
BRONCE
dani.eus79_11629
BRONCE
dontechnico_15855
PRO
neorazorx_1
PRO
yopli2000_5
PRO
civernet_11724
PRO
jmoreno_2610
PRO
prebac_1378
PRO
daniel89fg_739
Patrocinar

Amplíe sus conocimientos con los cursos oficiales

Curso básico de programación

Con este curso aprenderá cómo crear un plugin sencillo para FacturaScripts 2021: añadir nuevas páginas, tablas y columnas. Para entender este curso no se necesita mucha experiencia en programación, le enseñaremos los básico para modelar problemas sencillos. ¿A quién va dirigido? A cualquier persona con unos conocimientos muy básicos de programación. ¿Qué incluye? 18 lecciones con 14 vídeos explicativos.

298 9,99 €
Sesiones de programación

Esta es una recopilación de vídeos y documentación de pequeños desarrollos sobre FacturaScripts y sus plugins. Perfecto para expandir tus conocimientos de programación. ¿A quién va dirigido? A personas que ya hayan superado el curso básico de programación y busquen ampliar sus conocimientos. ¿Qué incluye? 16 lecciones con 16 vídeos explicativos (más de 7 horas de vídeos) y el código fuente de los ejemplos. Novedades mensuales: Este curso se amplía cada mes con nuevas lecciones.

80 19,99 €
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-2022 FacturaScripts

Soporte