Los Controladores

Un controlador es, básicamente, una página o opción en el menú de FacturaScripts. Cuando haces clic en el menú 'Almacén -> Productos', estarás ejecutando el controlador ListProducto.php. Para saber qué controlador estás ejecutando, observa la barra de direcciones de tu navegador.

Requisitos para los Controladores

  • Los controladores deben estar ubicados en la carpeta Controller de su plugin.
  • El nombre del archivo debe coincidir con el de la clase que contiene.
  • La clase debe extender de FacturaScripts\Core\Base\Controller o de uno de los controladores extendidos.

Ejemplo: MyNewController.php

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

use FacturaScripts\Core\Base\Controller;

class MyNewController extends Controller
{
    public function getPageData(): array
    {
        $pageData = parent::getPageData();
        $pageData['menu'] = 'admin';
        $pageData['title'] = 'MyNewController';
        $pageData['icon'] = 'fas fa-page';
        return $pageData;
    }

    public function privateCore(&$response, $user, $permissions)
    {
        parent::privateCore($response, $user, $permissions);

        // Tu código aquí
    }

    public function publicCore(&$response)
    {
        parent::publicCore($response);

        // Tu código aquí
    }
}

En este ejemplo, hemos añadido esta página al menú de admin, con el título MyNewController y el icono fas fa-page. Además, en la función privateCore(), se indica que se va a utilizar la plantilla correspondiente MyNewController, que está definida en el archivo MyNewController.html.twig en la carpeta View.

Función getPageData()

La función getPageData() define cómo aparece esta página en el menú, incluyendo a qué menú pertenece, así como su título e icono. Esta función será ejecutada por el núcleo de FacturaScripts cada vez que se invoque el controlador, así como al activar o actualizar el plugin. Devuelve un arreglo con los siguientes datos:

  • name: nombre de la clase del controlador. No debe ser modificado.
  • title: título de la página. Se traducirá utilizando el traductor integrado.
  • icon: icono a mostrar en el menú.
  • menu: menú en el que aparecerá.
  • submenu: submenú en el que aparecerá.
  • showonmenu: TRUE para mostrar en el menú (por defecto), FALSE para ocultar.
  • ordernum: orden de prioridad en el menú; un número más bajo significa que aparecerá más arriba.

Funciones privateCore() y publicCore()

FacturaScripts no solo permite a ti y tus empleados gestionar la empresa, también da acceso a los clientes. Por lo tanto, hay una separación entre lo que cada tipo de usuario puede ver. Esta separación se refleja en las funciones del controlador:

  • Si el usuario ha sido autenticado correctamente, se ejecutará la función privateCore() del controlador.
  • Alternativamente, se ejecutará la función publicCore(), que generalmente mostrará la pantalla de login, a menos que se implemente algo diferente.

Lo recomendable es implementar la lógica en privateCore().

Herencia de Controladores

Puedes heredar y personalizar cualquier controlador existente, pero recuerda usar un alias antes de heredar. A continuación se muestra un ejemplo:

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

use FacturaScripts\Core\Controller\EditCliente as ParentController;

class EditCliente extends ParentController
{
    // Tu código aquí
}

Nota la línea use FacturaScripts\Core\Controller\EditCliente as ParentController;. El as permite usar EditCliente bajo el alias de ParentController. Si no usas un alias, se producirá una colisión de nombres al definir la nueva clase, ya que ambas clases tendrían el mismo nombre.

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.33658s

Soporte