Upload
decharlas
View
1.745
Download
0
Embed Size (px)
DESCRIPTION
Charla sobre plugins a cargo de Jodi Llonch en las primeras jornadas symfony - decharlas.com
Citation preview
organizan
patrocinan colaboran
Jornadas Symfony 5 y 6 de julio 2010Universitat Jaume I, Castellón
http://decharlas.uji.es/symfony
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
NO REINVENTES LA RUEDA PLUGINS
Jordi Llonch <[email protected]>
Jornadas Symfony 5 y 6 de julio 2010Universitat Jaume I, Castellón
http://decharlas.uji.es/symfonyTuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
sesión patrocinada por
www.laigu.net
...también hacemos webs...
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
¿Y ESTE... QUIÉN ES?
Jordi Llonch email: [email protected]: jordillonch
Tuesday, July 6, 2010
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.
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
OBJETIVOS
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy?
Usar un plugin
OBJETIVOS
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy?
Usar un plugin
OBJETIVOS
¿Cómo debe ser un plugin y cómo encaja?
Estructura
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy?
Usar un plugin
OBJETIVOS
¿Cómo debe ser un plugin y cómo encaja?
Estructura
Crear un plugin
Publicar un plugin
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
¿Qué es un plugin, porqué plugins y estado de los plugins en Sf a día de hoy?
Usar un plugin
OBJETIVOS
¿Cómo debe ser un plugin y cómo encaja?
Estructura
Crear un plugin
Publicar un plugin
Ejemplos de plugins
Tuesday, July 6, 2010
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:
1 libreríamini proyecto
(modelo, acciones, plantillas, js, css...)
Tuesday, July 6, 2010
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)
Tuesday, July 6, 2010
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)
REUTILIZACIÓN
Tuesday, July 6, 2010
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
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
PLUGINS MÁS POPULARES
1. sfGuardPlugin2. sfDoctrineGuardPlugin3. sfFormExtraPlugin4. sfThumbnailPlugin5. sfFeed2Plugin6. sfJqueryReloadedPlugin7. sfDoctrinePlugin8. sfImageTransformPlugin9. sfWebBrowserPlugin10. sfAdminDashPlugin11. ...
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
Leer el README
Instalarlo:
PEAR
Descargar el tar.gz; Copiar a /plugins/
svn:external/git
USAR UN PLUGIN
./symfony plugin:install laiguSimplePlugin --stability=beta
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
USAR UN PLUGIN
class ProjectConfiguration extends sfProjectConfiguration { public function setup() { $this->enablePlugins('sfDoctrinePlugin', 'laiguSimplePlugin'); } }
all: .settings: enabled_modules: [default, sfGuardAuth, laiguSimple]
Actívalo en tu proyecto: /config/ProjectConfiguration.class.php:
Activa los modules en tu aplicación (si es necesario):/apps/frontend/config/settings.yml
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
Independiente de la aplicación o proyectoPersonalizable
¿CÓMO DEBE SER UN PLUGIN Y CÓMO ENCAJA?
Symfony
database
PHP
ORMplugin
aplicación
plugin
pluginpersonalización personalización
personalización
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
ESTRUCTURA DEL PLUGIN
Clases
Configuración
Schemas
Fixtures
Modules
Web assets
Tasks
...
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfonyTuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfonyTuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfonyTuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfonyTuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfonyTuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
symfony plugin:publish-assets
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
CREAR UN PLUGIN
Tuesday, July 6, 2010
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
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
AÑADIR CONFIGURACIÓN
Escribe tu configuración por defecto:
plugins/laiguSimplePlugin/config/app.yml
// cambia el valor por defecto de 'foo' en la aplicación app.ymlall: laigu_simple_plugin: foo: barbar
Personaliza para cada aplicación:
apps/<APP>/config/app.yml
all: laigu_simple_plugin: foo: bar
// ejemplo código en plug-in$foo = sfConfig::get('app_laigu_simple_plugin_foo');
Tuesday, July 6, 2010
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.ymlall: .settings: enabled_modules: [default, sfGuardAuth, laiguSimple]
Tuesday, July 6, 2010
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
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
AÑADIR CLASSES DE MODELO
plugins/laiguSimplePlugin/config/schema.ymlArchivo habitual de esquemaSe pueden mezclar:#schema original, en plugins/laiguSimplePlugin/config/schema.ymlArticulo: columns: nombre: string(50)
#schema proyecto, en config/schema.ymlArticulo: columns: titulo: string(50)
#resultado, mezclado interno y uso para generación de modelo y sqlArticulo: columns: nombre: string(50) titulo: string(50)
+
=
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
AÑADIR FUNCIONALIDAD
Programad la funcionalidad utilizando:
modules
classes
...
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
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
PUBLÍCALO
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
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
PUBLÍCALO
Fama
Tuesday, July 6, 2010
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 Formathttp://www.symfony-project.org/plugins/markdown_dingus
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
AÑADIR ARCHIVO LICENSE
Escoge una licencia:
MIT
BSD
LGPL
PHP License
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
AÑADIR ARCHIVO LICENSE
Escoge una licencia:
MIT
BSD
LGPL
PHP License
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
EMPAQUETAR UN PLUGIN
Los plugins Symfony son paquetes PEARAñadir package.xml
NameDescriptionSummaryAutor/esVersiónEstabilidadDependencias
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
<?xml version="1.0" encoding="UTF-8"?><package packagerversion="1.8.0" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd"> <name>laiguSimplePlugin</name> <channel>pear.symfony-project.com</channel> <summary>Simple plugin example.</summary> <description>Simple plugin example.</description> <lead> <name>Jordi Llonch</name> <user>jllonch</user> <email>[email protected]</email> <active>yes</active> </lead> <date>2010-07-06</date> <time>10:30:00</time> <version> <release>0.0.1</release> <api>0.0.1</api> </version> <stability> <release>beta</release> <api>beta</api> </stability> <license uri="http://www.opensource.org/licenses/mit-license.html">MIT</license> <notes>Added change max rows per page. </notes> <contents> <dir baseinstalldir="." name="/"> <file baseinstalldir="." md5sum="1d3a58638917a2095b6d5d3429de926e" name="config/app.yml" role="data" /> ....... <file baseinstalldir="." md5sum="516839143e185f2b278b01f5a43af076" name="LICENSE" role="data" />
<file baseinstalldir="." md5sum="e0bed858944fdb4261070561572b3ae2" name="README" role="data" /> </dir> </contents> <dependencies> <required> <php> <min>5.1.0</min> </php> <pearinstaller> <min>1.4.1</min> </pearinstaller> <package> <name>symfony</name> <channel>pear.symfony-project.com</channel> <min>1.2.0</min> <max>1.5.0</max> <exclude>1.5.0</exclude> </package> </required> </dependencies> <phprelease /> <changelog> <release> <version> <release>0.1.0</release> <api>0.1.0</api> </version> <stability> <release>beta</release> <api>beta</api> </stability> <date>2010-07-06</date> <license uri="http://www.opensource.org/licenses/mit-license.html">MIT</license> <notes>initial release</notes> </release> </changelog></package>
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
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”
CREAR UN PACKAGE.XML
Tuesday, July 6, 2010
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...
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
EJEMPLOS DE PLUGINS
laiguAdminThemePlugin
laiguExtGridPlugin
Tuesday, July 6, 2010
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
Tuesday, July 6, 2010
Jornadas Symfony http://decharlas.uji.es/symfony
GRACIAS
Jordi Llonch email: [email protected]: jordillonch
Por cierto, buscamos programadores para incorporar a nuestro equipo...
Tuesday, July 6, 2010