Controladores Extendidos de FacturaScripts

Para facilitar el desarrollo en FacturaScripts, se han creado controladores específicos: ListController para listados y EditController y PanelController para la edición de registros. Se recomienda utilizar estos controladores siempre que sea posible, ya que reducen el tiempo de desarrollo y garantizan una integración más fluida con el resto de FacturaScripts. Además, cualquier mejora futura que se implemente estará disponible automáticamente en su desarrollo.

Ejemplo de ListController

Primero listar, después editar

La filosofía de diseño de interfaces de usuario de FacturaScripts consiste en:

  • Visualizar primero un listado de registros para buscar o filtrar (implementado con ListController).
  • Editar un registro al hacer clic sobre él o pulsar el botón nuevo (realizado por EditController o PanelController).

Ejemplo de EditController

Conceptos Generales

La ejecución del controlador sigue estos pasos:

  1. Recepción de los parámetros enviados por la vista, normalmente mediante POST.
  2. Ejecución de las tareas previas a la carga de datos (método execPreviousAction).
  3. Carga de los datos de los modelos (método loadData).
  4. Ejecución de las tareas posteriores a la carga de datos (método execAfterAction).

Ciclo de Vida del Controlador

Este método de trabajo simplifica la comprensión y el seguimiento del código del controlador. Aunque no todos los controladores se ajustan a este patrón, se recomienda mantenerlo para facilitar futuros mantenimientos.

execPreviousAction()

Este método se ejecuta justo antes de la carga de datos y puede interrumpir la ejecución del controlador devolviendo false. Es ideal para tareas especiales solicitadas desde la vista mediante AJAX o por los botones de acción en la vista. Algunas de las tareas que actualmente se gestionan son: autocomplete, save y delete.

Ejemplo: Adición de nuevas acciones

protected function execPreviousAction($action)
{
   if ($action === 'hello') {
      // Si el controlador recibe action=hello, ejecutamos esta función
      Tools::log()->notice('hello');
      return true; // Continuamos con la carga normal
   } elseif ($action === 'hello-json') {
      // Devolvemos un JSON
      $this->request->setContent(json_encode(['message' => 'hello']));
      return false; // No continuamos con la carga de datos
   }
   return parent::execPreviousAction($action);
}

execAfterAction()

Este método se ejecuta después de la carga de datos y antes de que se visualicen al usuario. Como los datos de los modelos ya han sido leídos, cualquier cambio que se realice sobre ellos no se reflejará en la vista. Algunas de las tareas que actualmente se gestionan son: insert (permite establecer valores por defecto al crear un nuevo registro), export, megasearch.

protected function execAfterAction($action)
{
   if ($action === 'bye') {
      Tools::log()->notice('bye');
      return;
   }
   parent::execAfterAction($action);
}
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.38119s

Soporte