Las extensiones

Las extensiones son una forma sencilla para que los plugins añadan funcionalidad a recursos existentes (modelos, controladores, tablas o vistas). Las extensiones no son herencia, esto hay que tenerlo claro para poder trabajar con ellas.

Añadir columnas a una tabla

Supongamos que queremos añadir la columna "usado" a la tabla de productos. Lo que normalmente harías es añadir el archivo Table/productos.xml a tu plugin con la columna deseada. Pero esto no es correcto. Al hacer esto lo que le estás diciendo a FacturaScripts es que la tabla productos se compone únicamente de la columna "usado".

Para este caso lo correcto es crear el archivo Extension/Table/productos.xml:

<?xml version="1.0" encoding="UTF-8"?>
<table>
    <column>
        <name>usado</name>
        <type>boolean</type>
    </column>
</table>

De esta forma lo que estamos indicando a FacturaScripts es que añada esta columna a la definición de la tabla productos.

Tabla y modelo

Recuerda que todas las columnas de una tabla se cargan en el modelo como propiedades, así que no es necesario añadir la propiedad "usado" en el modelo.

Añadir columnas a una vista XML

Continuando con el ejemplo, para añadir la columna "usado" a la vista del producto utilizaremos un widget checkbox y lo incluiremos en una extensión en el archivo Extension/XMLView/EditProducto.xml:

<?xml version="1.0" encoding="UTF-8"?>
<view>
    <columns>
        <group name="options" numcolumns="12" valign="bottom">
           <column name="usado">
              <widget type="checkbox" fieldname="usado" />
           </column>
        </group>
    </columns>
</view>

De esta forma le estamos diciendo a FacturaScripts que incluya la columna "usado" dentro del grupo "options" de la lista de columnas del archivo XMLView/EditProducto.xml

Añadir métodos a un modelo

Como ya hemos comentado al añadir una columna a una tabla automáticamente se añade esa propiedad al modelo. Las extensiones para modelos se usarán únicamente para métodos o funciones. Y como también hemos comentado, las extensiones no son herencia, solamente son una forma de añadir métodos a una clase, pero sin extender y sin padre.

Continuando con el ejemplo vamos a añadir un método "usado()" que nos devolverá el valor de "usado". Podemos consultar este valor directamente, pero para el ejemplo imaginaremos que no. Para añadir el método "usado()" crearemos el archivo Extension/Model/Producto.php:

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

class Producto
{
   public function usado() {
      return function() {
         return $this->usado;
      };
   }
}

Fíjate que no hay ningún extends Producto. No estamos heredando del modelo, solamente estamos añadiendo el método "usado()". Y fíjate además que el método devuelve una función, esta función es la que se añade al modelo. Pero para ello primero hay que cargar la extensión en 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\Model\Producto());
}

Métodos clear(), delete() y save()

Si queremos ejecutar algo cada vez que se crea, actualiza o elimina un producto, podemos usar una extensión para ello. Siguiendo con el ejemplo, vamos a ejecutar algo cada vez que se crea un nuevo producto. Para ello en nuestro archivo Extension/Model/Producto.php vamos a añadir esta función:

public function saveInsert() {
   return function() {
        /// tu código aquí
     };
}

Este código se ejecutará cada vez que se cree un nuevo producto. Si queremos ejecutarlo cuando se actualice, podemos usar save() o saveUpdate().

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;

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

Recuerda que debes cargar la extensión desde el archivo Init.php del plugin.

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

Iniciar sesión
neorazorx_1
neorazorx_1
3040 Puntos 8 años
Fecha de creación 23-02-2020 00:00:00
Última actualización 07-04-2021
Contador de visitas 1011
Curso básico de usuario

Con este curso aprenderá a gestionar el día a día de su negocio con FacturaScripts 2021: hacer facturas, albaranes, pedidos y presupuestos. Gestionar clientes, proveedores y tarifas. Y a realizar la regularización de impuestos (trimestre de IVA). ¿A quién va dirigido? A cualquier usuario que ya tenga FacturaScripts instalado en su PC o hosting y quiera aprender rápidamente el manejo diario del programa. ¿Qué incluye? 18 lecciones con 17 vídeos explicativos.

180 4,99 €
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.

187 5,99 €
Sesiones de programación 2021

Esta es una recopilación de vídeos y documentación de pequeños desarrollos sobre FacturaScripts 2021 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? 8 lecciones con 8 vídeos explicativos (más de 4 horas de vídeos) y el código fuente de los ejemplos. Novedades mensuales: Este curso se amplía cada mes con nuevas lecciones.

13 9,99 €

Copyright (c) 2013-2021 FacturaScripts