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. 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().
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.
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());
}
Para hacer este mismo proceso con fsmaker ejecutamos:
fsmaker extension
En el asistente elegimos controlador y escribimos el nombre del controlador.
Los errores más comunes son:
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;
};
}
Necesita identificarse para continuar con esta acción. Haga clic en iniciar sesión o cree una cuenta.
Iniciar sesiónEspaña, 10 años, nivel 100
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 ;-)
OROCon 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 € |
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 € |