SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Jornadas Symfony                  5 y 6 de julio 2010
                                  Universitat Jaume I, Castellón

http://decharlas.uji.es/symfony


   organizan




   patrocinan                      colaboran
NO REINVENTES LA RUEDA
                                        PLUGINS
                                      Jordi Llonch <jordi@laigu.net>




   Jornadas Symfony                                                    5 y 6 de julio 2010
                                                                       Universitat Jaume I, Castellón
    http://decharlas.uji.es/symfony
Jornadas Symfony                                                                 http://decharlas.uji.es/symfony
sesión patrocinada por




                          www.laigu.net

                   ...también hacemos webs...




Jornadas Symfony                                http://decharlas.uji.es/symfony
¿Y ESTE... QUIÉN ES?




              Jordi Llonch   email: jordi@laigu.net
                              twitter: jordillonch




Jornadas Symfony                                      http://decharlas.uji.es/symfony
¿A QUIÉN VA DIRIGIDO?


                   Ya conocéis Symfony.




                   Os preguntáis si vale la pena
                   utilizar Symfony.



Jornadas Symfony                                   http://decharlas.uji.es/symfony
OBJETIVOS




Jornadas Symfony   http://decharlas.uji.es/symfony
OBJETIVOS
               ¿Qué es un plugin, porqué plugins y estado de los plugins en
               Sf a día de hoy?

               Usar un plugin




Jornadas Symfony                                                    http://decharlas.uji.es/symfony
OBJETIVOS
               ¿Qué es un plugin, porqué plugins y estado de los plugins en
               Sf a día de hoy?

               Usar un plugin

               ¿Cómo debe ser un plugin y cómo encaja?

               Estructura




Jornadas Symfony                                                    http://decharlas.uji.es/symfony
OBJETIVOS
               ¿Qué es un plugin, porqué plugins y estado de los plugins en
               Sf a día de hoy?

               Usar un plugin

               ¿Cómo debe ser un plugin y cómo encaja?

               Estructura

               Crear un plugin

               Publicar un plugin



Jornadas Symfony                                                    http://decharlas.uji.es/symfony
OBJETIVOS
               ¿Qué es un plugin, porqué plugins y estado de los plugins en
               Sf a día de hoy?

               Usar un plugin

               ¿Cómo debe ser un plugin y cómo encaja?

               Estructura

               Crear un plugin

               Publicar un plugin

               Ejemplos de plugins
Jornadas Symfony                                                    http://decharlas.uji.es/symfony
¿QUÉ ES UN PLUGIN?

              Pieza de código que añade funcionalidades al proyecto

              Una forma de empaquetar esas piezas

              Añadir funcionalidad desde:


                                                       mini proyecto
                   1 librería                          (modelo, acciones,
                                                       plantillas, js, css...)




Jornadas Symfony                                                        http://decharlas.uji.es/symfony
¿PORQUÉ PLUGINS?


              Reutilizar y compartir código común:

                   Entre diversos proyectos

                   O mejor... para la comunidad (aprendiendo/
                   compartiendo)




Jornadas Symfony                                                http://decharlas.uji.es/symfony
¿PORQUÉ PLUGINS?

                            REUTILIZACIÓN

              Reutilizar y compartir código común:

                   Entre diversos proyectos

                   O mejor... para la comunidad (aprendiendo/
                   compartiendo)




Jornadas Symfony                                                http://decharlas.uji.es/symfony
PLUGINS A DIA DE HOY

              2 de julio del 2010:

                   1055 plugins

                   2808 releases

                   442 developers

                   10809 users



Jornadas Symfony                     http://decharlas.uji.es/symfony
PLUGINS MÁS
       POPULARES
         1. sfGuardPlugin
         2. sfDoctrineGuardPlugin
         3. sfFormExtraPlugin
         4. sfThumbnailPlugin
         5. sfFeed2Plugin
         6. sfJqueryReloadedPlugin
         7. sfDoctrinePlugin
         8. sfImageTransformPlugin
         9. sfWebBrowserPlugin
         10. sfAdminDashPlugin
         11. ...


Jornadas Symfony                     http://decharlas.uji.es/symfony
USAR UN PLUGIN

              Leer el README

              Instalarlo:

                   PEAR
                     ./symfony plugin:install laiguSimplePlugin --stability=beta




                   Descargar el tar.gz; Copiar a /plugins/

                   svn:external/git

Jornadas Symfony                                                              http://decharlas.uji.es/symfony
USAR UN PLUGIN
              Actívalo en tu proyecto:
                /config/ProjectConfiguration.class.php:
                   class ProjectConfiguration extends sfProjectConfiguration
                     {
                       public function setup()
                       {
                         $this->enablePlugins('sfDoctrinePlugin', 'laiguSimplePlugin');
                       }
                     }




              Activa los modules en tu aplicación (si es necesario):
                /apps/frontend/config/settings.yml
                   all:
                     .settings:
                        enabled_modules:   [default, sfGuardAuth, laiguSimple]


Jornadas Symfony                                                                 http://decharlas.uji.es/symfony
¿CÓMO DEBE SER UN
       PLUGIN Y CÓMO ENCAJA?
              Independiente de la aplicación o proyecto
              Personalizable

                                                aplicación
                                          personalización



                        personalización
                                           plugin            personalización

                                              Symfony
                         plugin
                                                              plugin
                                 ORM
                                                     PHP
                                                 database
Jornadas Symfony                                                               http://decharlas.uji.es/symfony
ESTRUCTURA DEL
         PLUGIN
              Clases
              Configuración
              Schemas
              Fixtures
              Modules
              Web assets
              Tasks
              ...

Jornadas Symfony              http://decharlas.uji.es/symfony
Jornadas Symfony   http://decharlas.uji.es/symfony
Jornadas Symfony   http://decharlas.uji.es/symfony
Jornadas Symfony   http://decharlas.uji.es/symfony
Jornadas Symfony   http://decharlas.uji.es/symfony
Jornadas Symfony   http://decharlas.uji.es/symfony
symfony plugin:publish-assets




Jornadas Symfony                                   http://decharlas.uji.es/symfony
CREAR UN PLUGIN




Jornadas Symfony         http://decharlas.uji.es/symfony
CREAR UN PLUGIN

              Escoger un nombre:

                   Prefijo (sf sólo para plugins oficiales)

                   Nombre principal

                   Añadir como sufijo “Plugin”

                   Ejemplo: laiguSimplePlugin

              Crear carpeta plugins/laiguSimplePlugin


Jornadas Symfony                                              http://decharlas.uji.es/symfony
AÑADIR
       CONFIGURACIÓN
              Escribe tu configuración por defecto:
                    plugins/laiguSimplePlugin/config/app.yml
                    all:
                      laigu_simple_plugin:
                         foo:      bar


                    // ejemplo código en plug-in
                    $foo = sfConfig::get('app_laigu_simple_plugin_foo');



              Personaliza para cada aplicación:
                    apps/<APP>/config/app.yml
                   // cambia el valor por defecto de 'foo' en la aplicación app.yml
                   all:
                     laigu_simple_plugin:
                        foo:      barbar

Jornadas Symfony                                                                http://decharlas.uji.es/symfony
AÑADIR MODULES

              La misma estructura que un módulo “normal”

                   Podéis mover módulos desde vuestra aplicación a la
                   carpeta modules/ del plugin

                   Recordad habilitar los módulos en el settings.yml
                   all:
                     .settings:
                        enabled_modules:   [default, sfGuardAuth, laiguSimple]




Jornadas Symfony                                                                 http://decharlas.uji.es/symfony
AÑADIR WEB ASSETS

              Añadir web assets en la carpeta:

                     plugins/laiguSimplePlugin/web/

                          plugins/laiguSimplePlugin/web/js

                          plugins/laiguSimplePlugin/web/css

                          plugins/laiguSimplePlugin/web/images


                   symfony plugins:publish-assets


Jornadas Symfony                                                 http://decharlas.uji.es/symfony
AÑADIR CLASSES DE
       MODELO
              plugins/laiguSimplePlugin/config/schema.yml
                Archivo habitual de esquema
                Se pueden mezclar:
                   #schema original, en plugins/laiguSimplePlugin/config/schema.yml
                   Articulo:
                     columns:
                       nombre: string(50)


                                               +
                   #schema proyecto, en config/schema.yml
                   Articulo:
                     columns:
                       titulo: string(50)

                                               =
                   #resultado, mezclado interno y uso para generación de modelo y sql
                   Articulo:
                     columns:
                       nombre: string(50)
                       titulo: string(50)
Jornadas Symfony                                                               http://decharlas.uji.es/symfony
AÑADIR
       FUNCIONALIDAD

              Programad la funcionalidad
              utilizando:

                   modules

                   classes

                   ...



Jornadas Symfony                           http://decharlas.uji.es/symfony
PUBLÍCALO

              Para uso privado

                   Utiliza un svn:external para incluirlo en tus proyectos

              Para la comunidad

                   La comunidad os ayudará a encontrar y solucionar bugs y
                   perfeccionar vuestro plugin




Jornadas Symfony                                                       http://decharlas.uji.es/symfony
PUBLÍCALO

              Para uso privado

                   Utiliza un svn:external para incluirlo en tus proyectos

              Para la comunidad

                   La comunidad os ayudará a encontrar y solucionar bugs y
                   perfeccionar vuestro plugin

                   Fama


Jornadas Symfony                                                       http://decharlas.uji.es/symfony
AÑADIR ARCHIVO
       README
              Estructura:
                   Instalación
                   Configuración
                   Personalización
                   Limitaciones conocidas
                   TODO
                   Lista de cambios
              Track Wiki Format
                   http://www.symfony-project.org/plugins/markdown_dingus

Jornadas Symfony                                                     http://decharlas.uji.es/symfony
AÑADIR ARCHIVO
       LICENSE

                   Escoge una licencia:

                     MIT

                     BSD

                     LGPL

                     PHP License



Jornadas Symfony                          http://decharlas.uji.es/symfony
AÑADIR ARCHIVO
       LICENSE

                   Escoge una licencia:

                     MIT

                     BSD

                     LGPL

                     PHP License



Jornadas Symfony                          http://decharlas.uji.es/symfony
EMPAQUETAR UN
       PLUGIN
              Los plugins Symfony son paquetes PEAR
              Añadir package.xml
                Name
                Description
                Summary
                Autor/es
                Versión
                Estabilidad
                Dependencias


Jornadas Symfony                                      http://decharlas.uji.es/symfony
<?xml version="1.0" encoding="UTF-8"?>
                                                                          <file baseinstalldir="."
       <package packagerversion="1.8.0" version="2.0" xmlns="http://
                                                                       md5sum="e0bed858944fdb4261070561572b3ae2" name="README"
       pear.php.net/dtd/package-2.0" xmlns:tasks="http://
                                                                       role="data" />
       pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/
                                                                         </dir>
       2001/XMLSchema-instance" xsi:schemaLocation="http://
                                                                        </contents>
       pear.php.net/dtd/tasks-1.0      http://pear.php.net/dtd/
                                                                        <dependencies>
       tasks-1.0.xsd      http://pear.php.net/dtd/package-2.0
                                                                         <required>
       http://pear.php.net/dtd/package-2.0.xsd">
                                                                          <php>
        <name>laiguSimplePlugin</name>
                                                                           <min>5.1.0</min>
        <channel>pear.symfony-project.com</channel>
                                                                          </php>
        <summary>Simple plugin example.</summary>
                                                                          <pearinstaller>
        <description>Simple plugin example.</description>
                                                                           <min>1.4.1</min>
        <lead>
                                                                          </pearinstaller>
         <name>Jordi Llonch</name>
                                                                          <package>
         <user>jllonch</user>
                                                                           <name>symfony</name>
         <email>jordi@laigu.net</email>
                                                                           <channel>pear.symfony-project.com</channel>
         <active>yes</active>
                                                                           <min>1.2.0</min>
        </lead>
                                                                           <max>1.5.0</max>
        <date>2010-07-06</date>
                                                                           <exclude>1.5.0</exclude>
        <time>10:30:00</time>
                                                                          </package>
        <version>
                                                                         </required>
         <release>0.0.1</release>
                                                                        </dependencies>
         <api>0.0.1</api>
                                                                        <phprelease />
        </version>
                                                                        <changelog>
        <stability>
                                                                         <release>
         <release>beta</release>
                                                                          <version>
         <api>beta</api>
                                                                           <release>0.1.0</release>
        </stability>
                                                                           <api>0.1.0</api>
        <license uri="http://www.opensource.org/licenses/mit-
                                                                          </version>
       license.html">MIT</license>
                                                                          <stability>
        <notes>
                                                                           <release>beta</release>
       Added change max rows per page.
                                                                           <api>beta</api>
        </notes>
                                                                          </stability>
        <contents>
                                                                          <date>2010-07-06</date>
         <dir baseinstalldir="." name="/">
                                                                          <license uri="http://www.opensource.org/licenses/mit-
          <file baseinstalldir="."
                                                                       license.html">MIT</license>
       md5sum="1d3a58638917a2095b6d5d3429de926e" name="config/
                                                                          <notes>initial release</notes>
       app.yml" role="data" />
                                                                         </release>
          .......
                                                                        </changelog>
          <file baseinstalldir="."
                                                                       </package>
       md5sum="516839143e185f2b278b01f5a43af076" name="LICENSE"
       role="data" />



Jornadas Symfony                                                                                                  http://decharlas.uji.es/symfony
CREAR UN
       PACKAGE.XML

              PEAR_Package File Manager

              http://pear.php.net/package/PEAR_PackageFileManager_Cli




              Cuidado, en el archivo package.xml generado por esta
              utilidad, se debe sustituir el valor del atributo rol “php”
              por “data”




Jornadas Symfony                                                  http://decharlas.uji.es/symfony
SYMFONY-PROJECT.COM

              Crea una cuenta

                   http://www.symfony-project.org/user/new

              Crea el plugin

                   http://www.symfony-project.org/plugins/new

                   Sube el paquete PEAR que has creado

              Publicítalo

                   mailing-list, forums, twitter...


Jornadas Symfony                                                http://decharlas.uji.es/symfony
EJEMPLOS DE PLUGINS


              laiguAdminThemePlugin




              laiguExtGridPlugin




Jornadas Symfony                      http://decharlas.uji.es/symfony
CONCLUSIONES
              Una gran forma de extender funcionalidades en el
              framework

              Una nueva forma de encapsular nuestro código

              Muchos plugins disponibles

                   No todos son útiles y de calidad

              Muchas opciones para la personalización

                   Si el plugin está desarrollado correctamente

Jornadas Symfony                                                  http://decharlas.uji.es/symfony
GRACIAS

              Jordi Llonch           email: jordi@laigu.net
                                      twitter: jordillonch




                   Por cierto, buscamos programadores
                    para incorporar a nuestro equipo...




Jornadas Symfony                                              http://decharlas.uji.es/symfony

Weitere ähnliche Inhalte

Ähnlich wie Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón

Caso práctico symfony: voota.es - decharlas
Caso práctico symfony: voota.es - decharlasCaso práctico symfony: voota.es - decharlas
Caso práctico symfony: voota.es - decharlasDecharlas
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework SymfonyRodrigo Miranda
 
Presentacion Symfony2
Presentacion Symfony2Presentacion Symfony2
Presentacion Symfony2Raul Fraile
 
symfony admin generator - decharlas
symfony admin generator - decharlassymfony admin generator - decharlas
symfony admin generator - decharlasDecharlas
 
Symfony y Admin Generator
Symfony y Admin GeneratorSymfony y Admin Generator
Symfony y Admin GeneratorJavier López
 
Symfony: Domesticando las Vistas
Symfony: Domesticando las VistasSymfony: Domesticando las Vistas
Symfony: Domesticando las VistasJose Antonio Pio
 
Symfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlasSymfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlasDecharlas
 
Symfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesSymfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesAsier Marqués
 
Symfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlasSymfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlasDecharlas
 
Presentacion Symfony2 ADWE Alicante
Presentacion Symfony2 ADWE AlicantePresentacion Symfony2 ADWE Alicante
Presentacion Symfony2 ADWE AlicanteADWE Team
 
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de SymfonydeSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de SymfonyJavier Eguiluz
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011gorolabs
 
DeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyDeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyPablo Godel
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Arquitectura y diseño de un entorno de desarrollo - decharlas
Arquitectura y diseño de un entorno de desarrollo - decharlasArquitectura y diseño de un entorno de desarrollo - decharlas
Arquitectura y diseño de un entorno de desarrollo - decharlasDecharlas
 
Plone - Introducción y instalación
Plone - Introducción y instalaciónPlone - Introducción y instalación
Plone - Introducción y instalaciónajussis
 

Ähnlich wie Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón (20)

Caso práctico symfony: voota.es - decharlas
Caso práctico symfony: voota.es - decharlasCaso práctico symfony: voota.es - decharlas
Caso práctico symfony: voota.es - decharlas
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
 
Presentacion Symfony2
Presentacion Symfony2Presentacion Symfony2
Presentacion Symfony2
 
symfony admin generator - decharlas
symfony admin generator - decharlassymfony admin generator - decharlas
symfony admin generator - decharlas
 
Symfony y Admin Generator
Symfony y Admin GeneratorSymfony y Admin Generator
Symfony y Admin Generator
 
Symfony: Domesticando las Vistas
Symfony: Domesticando las VistasSymfony: Domesticando las Vistas
Symfony: Domesticando las Vistas
 
Symfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlasSymfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlas
 
Symfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesSymfony, cloud computing y web escalables
Symfony, cloud computing y web escalables
 
Symfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlasSymfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlas
 
Presentacion Symfony2 ADWE Alicante
Presentacion Symfony2 ADWE AlicantePresentacion Symfony2 ADWE Alicante
Presentacion Symfony2 ADWE Alicante
 
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de SymfonydeSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
 
Symfony
SymfonySymfony
Symfony
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011
 
DeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyDeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSky
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Arquitectura y diseño de un entorno de desarrollo - decharlas
Arquitectura y diseño de un entorno de desarrollo - decharlasArquitectura y diseño de un entorno de desarrollo - decharlas
Arquitectura y diseño de un entorno de desarrollo - decharlas
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Symfony
SymfonySymfony
Symfony
 
Plone - Introducción y instalación
Plone - Introducción y instalaciónPlone - Introducción y instalación
Plone - Introducción y instalación
 

Kürzlich hochgeladen

Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 

Kürzlich hochgeladen (20)

Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 

Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón

  • 1. Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony organizan patrocinan colaboran
  • 2. NO REINVENTES LA RUEDA PLUGINS Jordi Llonch <jordi@laigu.net> Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony Jornadas Symfony http://decharlas.uji.es/symfony
  • 3. sesión patrocinada por www.laigu.net ...también hacemos webs... Jornadas Symfony http://decharlas.uji.es/symfony
  • 4. ¿Y ESTE... QUIÉN ES? Jordi Llonch email: jordi@laigu.net twitter: jordillonch Jornadas Symfony http://decharlas.uji.es/symfony
  • 5. ¿A QUIÉN VA DIRIGIDO? Ya conocéis Symfony. Os preguntáis si vale la pena utilizar Symfony. Jornadas Symfony http://decharlas.uji.es/symfony
  • 6. OBJETIVOS Jornadas Symfony http://decharlas.uji.es/symfony
  • 7. OBJETIVOS ¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy? Usar un plugin Jornadas Symfony http://decharlas.uji.es/symfony
  • 8. OBJETIVOS ¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy? Usar un plugin ¿Cómo debe ser un plugin y cómo encaja? Estructura Jornadas Symfony http://decharlas.uji.es/symfony
  • 9. OBJETIVOS ¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy? Usar un plugin ¿Cómo debe ser un plugin y cómo encaja? Estructura Crear un plugin Publicar un plugin Jornadas Symfony http://decharlas.uji.es/symfony
  • 10. OBJETIVOS ¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy? Usar un plugin ¿Cómo debe ser un plugin y cómo encaja? Estructura Crear un plugin Publicar un plugin Ejemplos de plugins Jornadas Symfony http://decharlas.uji.es/symfony
  • 11. ¿QUÉ ES UN PLUGIN? Pieza de código que añade funcionalidades al proyecto Una forma de empaquetar esas piezas Añadir funcionalidad desde: mini proyecto 1 librería (modelo, acciones, plantillas, js, css...) Jornadas Symfony http://decharlas.uji.es/symfony
  • 12. ¿PORQUÉ PLUGINS? Reutilizar y compartir código común: Entre diversos proyectos O mejor... para la comunidad (aprendiendo/ compartiendo) Jornadas Symfony http://decharlas.uji.es/symfony
  • 13. ¿PORQUÉ PLUGINS? REUTILIZACIÓN Reutilizar y compartir código común: Entre diversos proyectos O mejor... para la comunidad (aprendiendo/ compartiendo) Jornadas Symfony http://decharlas.uji.es/symfony
  • 14. PLUGINS A DIA DE HOY 2 de julio del 2010: 1055 plugins 2808 releases 442 developers 10809 users Jornadas Symfony http://decharlas.uji.es/symfony
  • 15. PLUGINS MÁS POPULARES 1. sfGuardPlugin 2. sfDoctrineGuardPlugin 3. sfFormExtraPlugin 4. sfThumbnailPlugin 5. sfFeed2Plugin 6. sfJqueryReloadedPlugin 7. sfDoctrinePlugin 8. sfImageTransformPlugin 9. sfWebBrowserPlugin 10. sfAdminDashPlugin 11. ... Jornadas Symfony http://decharlas.uji.es/symfony
  • 16. USAR UN PLUGIN Leer el README Instalarlo: PEAR ./symfony plugin:install laiguSimplePlugin --stability=beta Descargar el tar.gz; Copiar a /plugins/ svn:external/git Jornadas Symfony http://decharlas.uji.es/symfony
  • 17. USAR UN PLUGIN Actívalo en tu proyecto: /config/ProjectConfiguration.class.php: class ProjectConfiguration extends sfProjectConfiguration { public function setup() { $this->enablePlugins('sfDoctrinePlugin', 'laiguSimplePlugin'); } } Activa los modules en tu aplicación (si es necesario): /apps/frontend/config/settings.yml all: .settings: enabled_modules: [default, sfGuardAuth, laiguSimple] Jornadas Symfony http://decharlas.uji.es/symfony
  • 18. ¿CÓMO DEBE SER UN PLUGIN Y CÓMO ENCAJA? Independiente de la aplicación o proyecto Personalizable aplicación personalización personalización plugin personalización Symfony plugin plugin ORM PHP database Jornadas Symfony http://decharlas.uji.es/symfony
  • 19. ESTRUCTURA DEL PLUGIN Clases Configuración Schemas Fixtures Modules Web assets Tasks ... Jornadas Symfony http://decharlas.uji.es/symfony
  • 20. Jornadas Symfony http://decharlas.uji.es/symfony
  • 21. Jornadas Symfony http://decharlas.uji.es/symfony
  • 22. Jornadas Symfony http://decharlas.uji.es/symfony
  • 23. Jornadas Symfony http://decharlas.uji.es/symfony
  • 24. Jornadas Symfony http://decharlas.uji.es/symfony
  • 25. symfony plugin:publish-assets Jornadas Symfony http://decharlas.uji.es/symfony
  • 26. CREAR UN PLUGIN Jornadas Symfony http://decharlas.uji.es/symfony
  • 27. CREAR UN PLUGIN Escoger un nombre: Prefijo (sf sólo para plugins oficiales) Nombre principal Añadir como sufijo “Plugin” Ejemplo: laiguSimplePlugin Crear carpeta plugins/laiguSimplePlugin Jornadas Symfony http://decharlas.uji.es/symfony
  • 28. AÑADIR CONFIGURACIÓN Escribe tu configuración por defecto: plugins/laiguSimplePlugin/config/app.yml all: laigu_simple_plugin: foo: bar // ejemplo código en plug-in $foo = sfConfig::get('app_laigu_simple_plugin_foo'); Personaliza para cada aplicación: apps/<APP>/config/app.yml // cambia el valor por defecto de 'foo' en la aplicación app.yml all: laigu_simple_plugin: foo: barbar Jornadas Symfony http://decharlas.uji.es/symfony
  • 29. AÑADIR MODULES La misma estructura que un módulo “normal” Podéis mover módulos desde vuestra aplicación a la carpeta modules/ del plugin Recordad habilitar los módulos en el settings.yml all: .settings: enabled_modules: [default, sfGuardAuth, laiguSimple] Jornadas Symfony http://decharlas.uji.es/symfony
  • 30. AÑADIR WEB ASSETS Añadir web assets en la carpeta: plugins/laiguSimplePlugin/web/ plugins/laiguSimplePlugin/web/js plugins/laiguSimplePlugin/web/css plugins/laiguSimplePlugin/web/images symfony plugins:publish-assets Jornadas Symfony http://decharlas.uji.es/symfony
  • 31. AÑADIR CLASSES DE MODELO plugins/laiguSimplePlugin/config/schema.yml Archivo habitual de esquema Se pueden mezclar: #schema original, en plugins/laiguSimplePlugin/config/schema.yml Articulo: columns: nombre: string(50) + #schema proyecto, en config/schema.yml Articulo: columns: titulo: string(50) = #resultado, mezclado interno y uso para generación de modelo y sql Articulo: columns: nombre: string(50) titulo: string(50) Jornadas Symfony http://decharlas.uji.es/symfony
  • 32. AÑADIR FUNCIONALIDAD Programad la funcionalidad utilizando: modules classes ... Jornadas Symfony http://decharlas.uji.es/symfony
  • 33. PUBLÍCALO Para uso privado Utiliza un svn:external para incluirlo en tus proyectos Para la comunidad La comunidad os ayudará a encontrar y solucionar bugs y perfeccionar vuestro plugin Jornadas Symfony http://decharlas.uji.es/symfony
  • 34. PUBLÍCALO Para uso privado Utiliza un svn:external para incluirlo en tus proyectos Para la comunidad La comunidad os ayudará a encontrar y solucionar bugs y perfeccionar vuestro plugin Fama Jornadas Symfony http://decharlas.uji.es/symfony
  • 35. AÑADIR ARCHIVO README Estructura: Instalación Configuración Personalización Limitaciones conocidas TODO Lista de cambios Track Wiki Format http://www.symfony-project.org/plugins/markdown_dingus Jornadas Symfony http://decharlas.uji.es/symfony
  • 36. AÑADIR ARCHIVO LICENSE Escoge una licencia: MIT BSD LGPL PHP License Jornadas Symfony http://decharlas.uji.es/symfony
  • 37. AÑADIR ARCHIVO LICENSE Escoge una licencia: MIT BSD LGPL PHP License Jornadas Symfony http://decharlas.uji.es/symfony
  • 38. EMPAQUETAR UN PLUGIN Los plugins Symfony son paquetes PEAR Añadir package.xml Name Description Summary Autor/es Versión Estabilidad Dependencias Jornadas Symfony http://decharlas.uji.es/symfony
  • 39. <?xml version="1.0" encoding="UTF-8"?> <file baseinstalldir="." <package packagerversion="1.8.0" version="2.0" xmlns="http:// md5sum="e0bed858944fdb4261070561572b3ae2" name="README" pear.php.net/dtd/package-2.0" xmlns:tasks="http:// role="data" /> pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/ </dir> 2001/XMLSchema-instance" xsi:schemaLocation="http:// </contents> pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/ <dependencies> tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 <required> http://pear.php.net/dtd/package-2.0.xsd"> <php> <name>laiguSimplePlugin</name> <min>5.1.0</min> <channel>pear.symfony-project.com</channel> </php> <summary>Simple plugin example.</summary> <pearinstaller> <description>Simple plugin example.</description> <min>1.4.1</min> <lead> </pearinstaller> <name>Jordi Llonch</name> <package> <user>jllonch</user> <name>symfony</name> <email>jordi@laigu.net</email> <channel>pear.symfony-project.com</channel> <active>yes</active> <min>1.2.0</min> </lead> <max>1.5.0</max> <date>2010-07-06</date> <exclude>1.5.0</exclude> <time>10:30:00</time> </package> <version> </required> <release>0.0.1</release> </dependencies> <api>0.0.1</api> <phprelease /> </version> <changelog> <stability> <release> <release>beta</release> <version> <api>beta</api> <release>0.1.0</release> </stability> <api>0.1.0</api> <license uri="http://www.opensource.org/licenses/mit- </version> license.html">MIT</license> <stability> <notes> <release>beta</release> Added change max rows per page. <api>beta</api> </notes> </stability> <contents> <date>2010-07-06</date> <dir baseinstalldir="." name="/"> <license uri="http://www.opensource.org/licenses/mit- <file baseinstalldir="." license.html">MIT</license> md5sum="1d3a58638917a2095b6d5d3429de926e" name="config/ <notes>initial release</notes> app.yml" role="data" /> </release> ....... </changelog> <file baseinstalldir="." </package> md5sum="516839143e185f2b278b01f5a43af076" name="LICENSE" role="data" /> Jornadas Symfony http://decharlas.uji.es/symfony
  • 40. CREAR UN PACKAGE.XML PEAR_Package File Manager http://pear.php.net/package/PEAR_PackageFileManager_Cli Cuidado, en el archivo package.xml generado por esta utilidad, se debe sustituir el valor del atributo rol “php” por “data” Jornadas Symfony http://decharlas.uji.es/symfony
  • 41. SYMFONY-PROJECT.COM Crea una cuenta http://www.symfony-project.org/user/new Crea el plugin http://www.symfony-project.org/plugins/new Sube el paquete PEAR que has creado Publicítalo mailing-list, forums, twitter... Jornadas Symfony http://decharlas.uji.es/symfony
  • 42. EJEMPLOS DE PLUGINS laiguAdminThemePlugin laiguExtGridPlugin Jornadas Symfony http://decharlas.uji.es/symfony
  • 43. CONCLUSIONES Una gran forma de extender funcionalidades en el framework Una nueva forma de encapsular nuestro código Muchos plugins disponibles No todos son útiles y de calidad Muchas opciones para la personalización Si el plugin está desarrollado correctamente Jornadas Symfony http://decharlas.uji.es/symfony
  • 44. GRACIAS Jordi Llonch email: jordi@laigu.net twitter: jordillonch Por cierto, buscamos programadores para incorporar a nuestro equipo... Jornadas Symfony http://decharlas.uji.es/symfony

Hinweis der Redaktion

  1. Hace 3 a&amp;#xF1;os planteamos una nueva forma de crecer como empresa basada en las buenas pr&amp;#xE1;cticas de programaci&amp;#xF3;n. ESTANDARIZAR. Opciones: Zend, CakePHP i Sf. La elecci&amp;#xF3;n fue escoger un framework full stack. Tengo experiencia en Sf desde la versi&amp;#xF3;n 1.0
  2. Preguntar cuantos conocen/no conocen sf? Los q conocen sf, entraremos en detalles y espero que al acabar la charla no s&amp;#xF3;lo pens&amp;#xE9;is en los plugins como algo para consumir, tambi&amp;#xE9;n los creeis aunque s&amp;#xF3;lo sea para vuestro uso privado. Los q no conocen sf, espero que simplemente entend&amp;#xE1;is los conceptos y teng&amp;#xE1;is la percepci&amp;#xF3;n que los plugins van a ser una herramienta m&amp;#xE1;s para conseguir ser m&amp;#xE1;s productivos con un potencial muy atractivo.
  3. 4 bloques: lo b&amp;#xE1;sico, internals, creci&amp;#xF3;n, ejemplos pr&amp;#xE1;cticos
  4. 4 bloques: lo b&amp;#xE1;sico, internals, creci&amp;#xF3;n, ejemplos pr&amp;#xE1;cticos
  5. 4 bloques: lo b&amp;#xE1;sico, internals, creci&amp;#xF3;n, ejemplos pr&amp;#xE1;cticos
  6. 4 bloques: lo b&amp;#xE1;sico, internals, creci&amp;#xF3;n, ejemplos pr&amp;#xE1;cticos
  7. Muchas veces las funcionalidades que queremos a&amp;#xF1;adir al proyecto contienen diversas partes. Lo podemos empaquetar Las funcionalidades pueden ser 1 simple liber&amp;#xED;a hasta un completo mini proyecto Simple librer&amp;#xED;as: escriba logs en redis, memcache... Mini proyecto: gesti&amp;#xF3;n usuarios-credenciales, login, recordar password...
  8. En conclusi&amp;#xF3;n, PLUGINS = REUTILIZACI&amp;#xD3;N
  9. Mucha diversidad i actividad... tal vez demasiada, s&amp;#xED;, tal vez...
  10. Estaremos de acuerdo que los 3 primeros son los plugins m&amp;#xE1;s guais... bueno, son los m&amp;#xE1;s usados. El resto es discutible. Tener en cuenta cuales son oficiales.
  11. Es lo que se encontrar&amp;#xED;a en un proyecto en la carpeta &amp;#x201C;plugins&amp;#x201D; Un plugin puede contener, clases, configuraciones, schemas.......
  12. Todo claro? Ahora vamos a repasar los pasos para la creaci&amp;#xF3;n de un plugin
  13. Importante el sufijo &amp;#x201C;Plugin&amp;#x201D;
  14. Paso opcional pero aconsejable Sobreescribe la configuraci&amp;#xF3;n por defecto en apps/&lt;APP&gt;/config/app.yml
  15. Paso opcional
  16. Paso opcional
  17. lo m&amp;#xE1;s importante, no? Hasta aqu&amp;#xED; lo b&amp;#xE1;sico para crear nuestro plugin personal
  18. Copiad un readme de alg&amp;#xFA;n otro plugin y lo adaptais al vuestro
  19. Si hay tiempo, mostrar como se crea el package.xml con pfm
  20. Si hay tiempo mostrar el backoffice de sf plugins
  21. Mostrar algunos plugins funcionando y el c&amp;#xF3;digo que lo ejecuta: laiguAdminThemePlugin: Q hace, como funciona, c&amp;#xF3;digo... laiguExtGridPlugin