Your SlideShare is downloading. ×

Sf2 pr5 mi primer proyecto

7,337

Published on

Una aplicacion sencilla para conocer el ambiente de trabajo de Symfony2

Una aplicacion sencilla para conocer el ambiente de trabajo de Symfony2

Published in: Entertainment & Humor
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,337
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
153
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ...UN PRIMER PROYECTO EN SYMFONY2 SYMFONY2 PRIMER PROYECTO EN SYMFONY2 PR5    CÉSAR HERNÁNDEZ dpcesar@gmail.com - PR5 Version 0003­12­11
  • 2. ...UN PRIMER PROYECTO EN SYMFONY2 Resumen (Abstract): Este  papel  de  trabajo,  en  formato  de  presentación,  tiene como objetivos: aclarar un poco “algo acerca la  teoria de sistemas” utilizada en  Symfony2; y crear un  ; y proyecto  sencillo  que  adiestre  al  nuevo  programador  acerca de esta versión del framework de symfony. Para hacer referencia a Symfony2 se utilizara el acronimo Sf2. Palabras Claves: framework, symfony, symfony2, sf2, bundle, php, PR5    - PR5
  • 3. ...UN PRIMER PROYECTO EN SYMFONY2 CONFIGURACIÓN MODELO­VISTA­CONTROLADORANTES DE COMENZAR CON SYMFONY2Su sistema operativo debe cumplir con los siguientes requerimientos basicos Apache   (es un servidor web)  Puede utilizar el Apache o cualquier otro servidor web de su preferencia que soporte PHP PHP 5.3.x   (lenguaje de programación) Versiones anteriores de PHP no contienen algunas funciones que son utilizadas Symfony2 GIT   (Es un sistema de control de versiones)      El GIT es necesario para descargar la “última versión” y la “mas actualizada” de Symfony2  MySQL   (Es un servidor de base de datos)      Es requerido para el ejemplo a desarrollar en este documento     - PR5
  • 4. ...UN PRIMER PROYECTO EN SYMFONY2 CONFIGURACIÓN MODELO­VISTA­CONTROLADORCREAR “UNA CARPETA” PARA LOS PROYECTOSEN ESTA CARPETA ESTARAN NUESTRAS APLICACIONES Y LOS BUNDLES QUE LA COMPONENDefinir el nombre de nuestra carpeta de proyectospara este ejemplo vamos a utilizar el nombre sf2­pr5Ubicarse en la carpeta de ejecución del servidor webLa carpeta para nuestros proyectos debe estar una ruta con permisos de ejecución Usualmente en: linux “/var/www” o en windows  “c:/inetpub/web” o “c:/archivos de programas/apache/www”A continuación ejecutamos el siguiente comando  git clone https://github.com/symfony/symfony­sandbox.git sf2­pr5     Este comando creara la carpeta sf2­pr5 y   de forma automatica se descargará la “última versión”  y la “mas actualizada”     del framework Symfony2   - PR5
  • 5. ...UN PRIMER PROYECTO EN SYMFONY2 CONFIGURACIÓN MODELO­VISTA­CONTROLADORNOTAS DE CONFIGURACIÓNPuede clonar a través del GIT otros repositorios importantes del Sf2 como su documentaciónPara ver todos repositorios oficiales del proyecto visite   http://github.com/symfony     - PR5
  • 6. ...UN PRIMER PROYECTO EN SYMFONY2 CONFIGURACIÓN MODELO­VISTA­CONTROLADOR1.­ PROBAR LA INSTALACIÓN SYMFONY2       http://localhost/sf2­pr5/web/app_dev.php2.­ CHEQUEAR EL ENTORNO DE TRABAJO SF2       http://localhost/sf2­pr5/web/check.php     - PR5
  • 7. ...UN PRIMER PROYECTO EN SYMFONY2 CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Vamos crear el bundle MiPrimer Esta será una aplicación que mostrará un simple listado con dos item Los objetivos: Familiarizar al programador con algunas de las particularidades de Symfony2  ●  Configurar la aplicación /app ●  La estructura basica (modelo­vista­controlador) de un bundle /MiEmpresa/MiPrimerBundle ●  Base de datos usando Doctrine2 ●  Cargar de datos iniciales a la base datos ●  Y si todo sale bien... mostrar una pagina en el navegador !    - PR5
  • 8. ...UN PRIMER PROYECTO EN SYMFONY2 app Configuración de la aplicación scr Codigo fuente de los bundles que componen la aplicación    - PR5
  • 9. ...UN PRIMER PROYECTO EN SYMFONY2app CONFIGURACIÓN MODELO­VISTA­CONTROLADORRegistrar el namespacesapp/autoload.phpDentro del archivo autoload.php existe un arreglo llamado registerNamespaces $loader­>registerNamespaces(array(     Symfony                          => __DIR__./../vendor/symfony/src,     Sensio                             => __DIR__./../src,     MiEmpresa                      => __DIR__./../src,      ....     - PR5
  • 10. ...UN PRIMER PROYECTO EN SYMFONY2 app CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Registrar el bundle en AppKernel.php app/AppKernel.php Dentro del archivo AppKernel.php existe una función llamada RegisterBundles En esta función esta definido un arreglo de Bundles Ahora hay  que ubicar el comentario // Register your Bundles Y registrar el bundle que vamos a crear, agregando el siguiente codigo new MiEmpresaMiPrimerBundleMiPrimerBundle(),Los valores con los que se inicializa ese arreglo de Bundles, estan separados en secciones, demarcadas  por  , comentarios.Un detalle: es importante el orden de aparición de los Bundles     - PR5
  • 11. ...UN PRIMER PROYECTO EN SYMFONY2 app CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Plantilla principal base.html.php app/views/base.html.php <!DOCTYPE html> <html>     <head>         <meta http­equiv="Content­Type" content="text/html; charset=utf­8" />         <title><?php $view[slots]­>output(title, Mi Primer Aplicación) ?></title>     </head>     <body>         <?php $view[slots]­>output(_content) ?>     </body> </html>Configure aqui elementos comunes de la vista que seran visibles en todas las paginas de su aplicación     - PR5
  • 12. ...UN PRIMER PROYECTO EN SYMFONY2 app CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Configuración Global config.yml    el motor de la vista app/config/config.yml Symfony2 implementa un bundle llamado twig para trabajar el código fuente de las vistas  es muy practico, flexible y completo, sin embargo vamos a trabajar la vista de este  ejemplo con codigo php. Para ello debemos cambiar la configuración por defecto de Symfony2 ya que solo viene  establecido twig como motor de interpretación del código de las vistas Cambiar templating:    { engines: [twig] } #assets_version: SomeVersionScheme Por templating:    { engines: [php,twig] } #assets_version: SomeVersionScheme  Ese cambio debe hacerse en el archivo app/config/config.yml dentro de la etiqueta app.config:     - PR5
  • 13. ...UN PRIMER PROYECTO EN SYMFONY2 app CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Configuración Global config.yml    el motor de la base de datos app/config/config.yml Cambiar Por ## Doctrine Configuration # Doctrine Configuration #doctrine.dbal: doctrine.dbal: #    dbname:   xxxxxxxx     dbname:   MiPrimerBaseDatosSymfony2 #    user:     xxxxxxxx     user:     root #    password: ~     password: root #doctrine.orm: doctrine.orm: #    auto_generate_proxy_classes: %kernel.debug%     auto_generate_proxy_classes: %kernel.debug% #    mappings:     mappings: #        HelloBundle: ~         HelloBundle: ~         MiPrimerBundle: ~  Ese cambio debe hacerse en el archivo app/config/config.yml   dentro de las etiquetas doctrine.dbal: y doctrine.orm:     - PR5
  • 14. ...UN PRIMER PROYECTO EN SYMFONY2app CONFIGURACIÓN MODELO­VISTA­CONTROLADORConfiguración Global routing.ymlapp/config/routing.yml Todas las url de un bundle en particular se configuran dentro de ese bundle, finalmente  estas se unifican para la aplicación en el archivo app/config/routing.yml Con esto hace un efecto de cascada Al archivo de la aplicación   app/config/routing.yml   le integramos el del bundle MiPrimerBundle/Resources/routing.yml  Colocando el siguiente código al final del archivo app/config/routing.yml MiPrimer:     resource: @MiPrimerBundle/Resources/config/routing.yml     - PR5
  • 15. ...UN PRIMER PROYECTO EN SYMFONY2 scr CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Crear el bundle MiPrimer <?php namespace MiEmpresaMiPrimerBundle; Crear el directorio del Bundle mkdir ­p src/MiEmpresa/MiPrimerBundle use SymfonyComponentHttpKernelBundleBundle; class MiPrimerBundle extends Bundle Crear y editar el archivo MiPrimerBundle.php {     /** src/MiEmpresa/MiPrimerBundle/MiPrimerBundle.php      * {@inheritdoc}      */     public function getNamespace()     {         return __NAMESPACE__;     } Agrege el      /**      * {@inheritdoc} siguiente código      */     public function getPath()     {         return strtr(__DIR__, , /);     } }Aqui estas creando la  carpeta  y el “archivo principal del bundle”, en el cual indicas: Primero, cual es el namespace del bundle, es decir, el directorio donde estan los archivos del bundle;  Segundo defines  e  inicializas  una  clase  (class)  como  bundle  cuyo  nombre  se  compone  del  “nombre  del     bundle” (MiPrimer) seguido de la palabra “Bundle”. - PR5
  • 16. ...UN PRIMER PROYECTO EN SYMFONY2 scr CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Definición de las tablas de la Base de Datos El modelo entidad­relación se detalla en el directorio Entity del Bundle  Por defecto, el directorio Entity no existe... Cree el directorio Entity mkdir ­p src/MiEmpresa/MiPrimerBundle/Entity <?php namespace MiEmpresaMiPrimerBundleEntity; Este es un ejemplo básico de la  class MiPrimer entidad que definiremos en la  { siguiente lamina   protected $id;   private $title;   private $body; }La definición de las estructuras de las diferentes tabas de la base de datos de su aplicación son parte del modelo ( esto dentro del concepto: modelo­vista­controlador )     - PR5
  • 17. ...UN PRIMER PROYECTO EN SYMFONY2scr CONFIGURACIÓN MODELO­VISTA­CONTROLADORPreparar el modeloEdite el archivo MiPrimerEntidad.php <?phpsrc/Empresa/MiPrimerBundle/Entity/MiPrimerEntidad.php namespace MiEmpresaMiPrimerBundleEntity; /**  * @orm:Entity  */ class clientes {     /**      * @orm:Id      * @orm:Column(type="integer")Agrege el       * @orm:GeneratedValue(strategy="IDENTITY")      */siguiente código     protected $id;       /**      * @orm:Column(type="string")      * @orm:Column(length="255")      */     private $title;     /**      * @orm:Column(type="string")      * @orm:Column(length="255")      */     private $body;     } - PR5
  • 18. ...UN PRIMER PROYECTO EN SYMFONY2scr CONFIGURACIÓN MODELO­VISTA­CONTROLADORContinuamos preparando el modeloCrear un directorio para los datos inicialesmkdir ­p  src/MiEmpresa/MiPrimerBundle/DataFixtures/ORMCrear un archivo para esos datos inicialessrc/MiEmpresa/MiPrimerBundle/DataFixtures/ORM/MisDatosIniciales.php     - PR5
  • 19. ...UN PRIMER PROYECTO EN SYMFONY2scr CONFIGURACIÓN MODELO­VISTA­CONTROLADORContinuamos preparando el modeloAgrege el siguiente código <?php namespace MiEmpresaMiPrimerBundleDataFixturesORM; use DoctrineORMEntityManager,       DoctrineCommonDataFixturesFixtureInterface,       MiEmpresaMiPrimerBundleEntityMisDatosIniciales; class Loadclientes implements FixtureInterface {     public function load($em)     {         $MiCliente1 = new MiCliente();         $MiCliente1­>setTitle(Cesar Hernandez);         $MiCliente­>setBody(Ing. De Sistemas, graduado en la Universidad Bicentenaria de Aragua);         $em­>persist($MiCliente1);         $MiCliente2 = new MiCliente();         $MiCliente2­>setTitle(Sebastian Hernandez);         $MiCliente2­>setBody(Estudiante de Maternal, nacido en Lecheria, Estado Anzoátegui);         $em­>persist($MiCliente2);        $em­>flush();     }   }   - PR5
  • 20. ...UN PRIMER PROYECTO EN SYMFONY2 CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Terminamos la configuraciones relacionadas con la base de datos Ahora vamos a: CREAR  LA BASE DE DATOS DE LA APLICACIÓN  Recuerde que el nombre de la base de datos lo indico en el archivo app/config/config.yml php app/console doctrine:database:createEste comando debe ejecutarlo estando en la carpeta /sf2­pr5     - PR5
  • 21. ...UN PRIMER PROYECTO EN SYMFONY2 CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Terminamos la configuraciones relacionadas con la base de datos Ahora vamos a: CREAR  LAS TABLAS DE LA APLICACIÓN  Recuerde que la entidad la detallo en el archivo scr/MiEmpresa/MiPrimerBundle/Entity/MiPrimerEntidad.php php app/console doctrine:schema:createEste comando debe ejecutarlo estando en la carpeta /sf2­pr5     - PR5
  • 22. ...UN PRIMER PROYECTO EN SYMFONY2 CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Terminamos la configuraciones relacionadas con la base de datos Ahora vamos a: CONFIGURAR  EL ACCESO A LOS CAMPOS DE LA TABLA DE LA APLICACIÓN  Este comando va agregar funciones setter() y getter() en el archivo scr/MiEmpresa/MiPrimerBundle/Entity/MiPrimerEntidad.php php app/console doctrine:generate:entities MiPrimerBundleEste comando debe ejecutarlo estando en la carpeta /sf2­pr5     - PR5
  • 23. ...UN PRIMER PROYECTO EN SYMFONY2 CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Terminamos la configuraciones relacionadas con la base de datos Ahora vamos a: CARGAR  LOS DATOS INICIALES Este comando va a agregar registros a la tabla cliente Que estan definidos en el archivo scr/MiEmpresa/MiPrimerBundle/DataFixtures/ORM/MisDatosIniciales.php php app/console doctrine:data:loadEste comando debe ejecutarlo estando en la carpeta /sf2­pr5     - PR5
  • 24. ...UN PRIMER PROYECTO EN SYMFONY2 scr CONFIGURACIÓN MODELO­VISTA­CONTROLADOR La Vista ­ layout Crear un layout para el Bundle src/MiEmpresa/MiPrimerBundle/Resources/views/layout.html.php Agrege el  <?php $view­>extend(::base.html.php) ?> siguiente código <h1>Mi Primer Aplicación</h1> <?php $view[slots]­>output(_content) ?>LOS LAYOUT SE ORDENAN EN CASCADA        EN ESTE EJEMPLO ESTAN              app/views/base.html.php              src/MiEmpresa/MiPrimerBundle/Resources/views/layout.html.php       UNIDOS POR LA INSTRUCCIÓN              <?php $view­>extend(::base.html.php) ?>     - PR5
  • 25. ...UN PRIMER PROYECTO EN SYMFONY2scr CONFIGURACIÓN MODELO­VISTA­CONTROLADOREl ControladorCrear el directorio de la vistamkdir ­p src/MiEmpresa/MiPrimerBundle/ControllerCrear y editar el archivo MiPrimerController.phpsrc/MiEmpresa/MiPrimerBundle/Controller/MiPrimerController.php <?php namespace MiEmpresaMiPrimerBundleController; use SymfonyBundleFrameworkBundleControllerController; class MiPrimerController extends Controller {     public function indexAction()     {         $em = $this­>container­>get(doctrine.orm.entity_manager);         $Clientes = $em­>createQuery(SELECT b FROM MiEmpresaMiPrimerBundleEntityclientes b ORDER BY b.body DESC)­>execute();         return $this­>render(MiPrimerBundle:MiPrimer:index.html.php, array(MisRegistros => $Clientes));     } }     - PR5
  • 26. ...UN PRIMER PROYECTO EN SYMFONY2scr CONFIGURACIÓN MODELO­VISTA­CONTROLADORLa VistaCrear el directorio de la vistamkdir ­p src/MiEmpresa/MiPrimerBundle/Resources/views/MiPrimer/Crear y editar el archivo index.html.phpsrc/MiEmpresa/MiPrimerBundle/Resources/Resources/views/MiPrimer/index.html.php <?php $view­>extend(MiPrimerBundle::layout.html.php) ?> <h2> Mis registros </h2> <ul class=clientes>Agrege el  <?php foreach($MisRegistros as $Clientes): ?>siguiente código   <li>      <h3><?php echo $Clientes­>GetTitle(); ?></h3>      <p><?php echo $Clientes­>GetBody(); ?></p>   </li> <?php endforeach; ?> </ul>     - PR5
  • 27. ...UN PRIMER PROYECTO EN SYMFONY2scr CONFIGURACIÓN MODELO­VISTA­CONTROLADOREl Routing del bundleCrear el directorio de la configuración del bundlemkdir ­p  src/MiEmpresa/MiPrimerBundle/Resources/configCrear y editar el archivo routing.ymlmkdir ­p src/MiEmpresa/MiPrimerBundle/Resources/config/routing.yml MiPrimer:     pattern:     /MiPrimer     defaults: { _controller: MiPrimerBundle:MiPrimer:index}     - PR5
  • 28. ...UN PRIMER PROYECTO EN SYMFONY2 CONFIGURACIÓN MODELO­VISTA­CONTROLADORLimpiamos el cache de Symfony2Ejecutando en la consola del sistema operativo     rm ­rf app/cache/* Si todo salio bien, probamos el bundle  en nuestro navegador        http://localhost/sf2­pr5/web/app_dev.php/MiPrimer    - PR5

×