Las extensiones
Las extensiones son una forma sencilla para que los plugins modifiquen o añadan funciones nuevas a controladores, modelos, tablas o vistas de otros plugins (o del core), internamente el programa lo pipe().
No son herencia
Las extensiones o pipes no son herencia. Cuando en una extensión añades código a ejecutar durante el guardado de un modelo en la base de datos, no estás heredando del modelo, sino que estás "incrustando" este nuevo código en el archivo original. Por eso varios plugins pueden añadir extensiones a un mismo archivo, mientras que con herencia no es posible.
Sólo en archivos soportados
No es posible añadir extensiones a cualquier archivo imaginable. Solamente en aquellos soportados:
- Extensiones de tablas
- Extensiones de modelos
- Extensiones de controladores
- Extensiones de XMLViews
- Extensiones de vistas HTML
Extensiones no soportadas
No es posible añadir extensiones a los archivos de:
- Core/Base
- Core/Model/Base
- Core/Lib/ExtendedController
Extensiones de archivos XML
Las extensiones de archivos xml se aplican automáticamente. Si crear un archivo Extension/Table/productos.xml, el contenido de ese archivo se fusionará automáticamente con el del archivo orginal. El resultado se almacena en la Dinamic/Table/productos.xml, que es el archivo que utiliza finalmente FacturaScripts.
Extensiones de archivos PHP (controladores y modelos)
Las extensiones de archivos PHP no se cargan automáticamente. Es necesario cargarlas en el archivo Init.php del plugin.
public function init() {
$this->loadExtension(new Extension\Controller\ListProducto());
}