Extensiones de controladores

Para modificar el comportamiento o añadir pestañas o secciones a controladores de otros plugins (o del core) podemos usar una extensión, es decir, crearemos un archivo php con el mismo nombre que el controlador en la carpeta Extension/Controller de nuestro plugin.

Las extensiones no son herencia

Las extensiones no son herencia. No se puede extender cualquier función imaginable, solamente las que tienen soporte. Y cada función que añadas en una extensión debe tener un return function().

Ejemplo: añadir pestañas a un controlador

Las extensiones también sirven para poder añadir pestañas o cualquier método a controladores que ya existen. Siguiendo con el ejemplo vamos a añadir la pestaña de logs al listado de productos (controlador ListProducto). Para ello creamos el archivo Extension/Controller/ListProducto.php:

<?php
namespace FacturaScripts\Plugins\MiPLugin\Extension\Controller;

use Closure;

class ListProducto
{
   public function createViews(): Closure
   {
      return function() {
         $this->addView('ListLogMessage', 'LogMessage', 'log');
      };
   }
}

Recuerda que las funciones deben tener un return function() y que debes cargar la extensión desde el archivo Init.php del plugin.

Cargar extensiones en el Init.php

Las extensiones de archivos xml se integran automáticamente al activar el plugin o reconstruir Dinamic. En cambio, las extensiones de archivo php se deben cargar explícitamente, y se deben hacer desde el archivo Init.php del plugin, en el método init().

public function init() {
   $this->loadExtension(new Extension\Controller\ListProducto());
}

Métodos disponibles para extender

fsmaker

Para hacer este mismo proceso con fsmaker ejecutamos:

fsmaker extension

En el asistente elegimos controlador y escribimos el nombre del controlador.

¿No funciona?

Los errores más comunes son:

  • Tener un namespace incorrecto. El namespace debe reflejar la ruta donde está el archivo. Si el archivo está en la carpeta Extension/Model de tu plugin, el namespace dene incluir Extension\Model.
  • Intentar extender funciones que no soportan extensiones. Solamente las funciones o métodos indicados arriba se pueden extender.
  • No usar return function(). Las funciones deben devolver un return function(), y si no, no funcionará. Si la función necesita parámetros, estos deben ir en el return function().
  • No cargar la extensión desde el Init.php del plugin.

Parámetros por referencia

Si crear funciones personalizadas y estas incluyen parámetros no se debe poner "&" en los parámetros ya que no está permitido, y causará problemas. Como sugerencia puedes devolverte el parámetro que deseas modificar.

Ejemplo mal

public function applyStockChangesFromWork(): Closure
{
        return function (&stock) {
            $stock->cantidad = 5;
        };
}

Ejemplo Bueno

public function applyStockChangesFromWork(): Closure
{
        return function (stock) {
            $stock->cantidad = 5;
            return $stock;
        };
}

Siguiente

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

Iniciar sesión
PRO
neorazorx_1
neorazorx_1

España, 10 años, nivel 100

Las extensiones

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
manel_11440
ORO
contacta_2746
ORO
franciscmuniztv_17817
ORO
clinicastillo_1549
ORO
ccano_8323
ORO
mariano_6807
PLATA
compras_1706
PLATA
acaselles_13670
PLATA
v.delgado_14821
PLATA
angelgonzalez_1980
PLATA
robertchio_499
PLATA
phtemprano_14326
PLATA
contacto_2906
PLATA
miguel_14380
PLATA
dominique.perarnaud_4973
BRONCE
rexmaris_12857
BRONCE
fnusmas_5683
BRONCE
braunny809_17749
PRO
neorazorx_1
PRO
jmoreno_2610
PRO
civernet_11724
PRO
yopli2000_5
PRO
prebac_1378
PRO
daniel89fg_739
PRO
estrategicos_11919
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.

324 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? 19 lecciones con 19 vídeos explicativos (más de 9 horas de vídeos) y el código fuente de los ejemplos. Novedades mensuales: Este curso se amplía cada mes con nuevas lecciones.

95 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-2023 FacturaScripts

Soporte