SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
...UN PRIMER PROYECTO EN SYMFONY2




              SYMFONY2
            PRIMER PROYECTO EN SYMFONY2 PR5




                                              CÉSAR HERNÁNDEZ
                                             dpcesar@gmail.com
    - PR5                                          Version 0003­12­11
...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
...UN PRIMER PROYECTO EN SYMFONY2

                                                                        CONFIGURACIÓN
                                                             MODELO­VISTA­CONTROLADOR



ANTES DE COMENZAR CON SYMFONY2
Su 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
...UN PRIMER PROYECTO EN SYMFONY2

                                                                                CONFIGURACIÓN
                                                                     MODELO­VISTA­CONTROLADOR



CREAR “UNA CARPETA” PARA LOS PROYECTOS
EN ESTA CARPETA ESTARAN NUESTRAS APLICACIONES Y LOS BUNDLES QUE LA COMPONEN


Definir el nombre de nuestra carpeta de proyectos
para este ejemplo vamos a utilizar el nombre sf2­pr5

Ubicarse en la carpeta de ejecución del servidor web
La 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
...UN PRIMER PROYECTO EN SYMFONY2

                                                           CONFIGURACIÓN
                                                MODELO­VISTA­CONTROLADOR



NOTAS DE CONFIGURACIÓN

Puede clonar a través del GIT otros repositorios importantes del Sf2 
como su documentación

Para ver todos repositorios oficiales del proyecto visite
   http://github.com/symfony




                                      

     - PR5
...UN PRIMER PROYECTO EN SYMFONY2

                                                       CONFIGURACIÓN
                                            MODELO­VISTA­CONTROLADOR


1.­ PROBAR LA INSTALACIÓN SYMFONY2
       http://localhost/sf2­pr5/web/app_dev.php




2.­ CHEQUEAR EL ENTORNO DE TRABAJO SF2
       http://localhost/sf2­pr5/web/check.php
                                     

    - PR5
...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
...UN PRIMER PROYECTO EN SYMFONY2




       app   Configuración de la aplicación



       scr   Codigo fuente de los bundles que componen la aplicación

                            

    - PR5
...UN PRIMER PROYECTO EN SYMFONY2

app                                                                            CONFIGURACIÓN
                                                                    MODELO­VISTA­CONTROLADOR



Registrar el namespaces
app/autoload.php


Dentro del archivo autoload.php existe un arreglo llamado registerNamespaces



     $loader­>registerNamespaces(array(
         'Symfony'                          => __DIR__.'/../vendor/symfony/src',
         'Sensio'                             => __DIR__.'/../src',
         'MiEmpresa'                      => __DIR__.'/../src',
          ....




                                                      

     - PR5
...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
...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
...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
...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
...UN PRIMER PROYECTO EN SYMFONY2

app                                                                               CONFIGURACIÓN
                                                                       MODELO­VISTA­CONTROLADOR

Configuración Global routing.yml
app/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
...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
...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
...UN PRIMER PROYECTO EN SYMFONY2

scr                                                                         CONFIGURACIÓN
                                                                 MODELO­VISTA­CONTROLADOR
Preparar el modelo
Edite el archivo MiPrimerEntidad.php                    <?php
src/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
...UN PRIMER PROYECTO EN SYMFONY2

scr                                                                              CONFIGURACIÓN
                                                                      MODELO­VISTA­CONTROLADOR

Continuamos preparando el modelo

Crear un directorio para los datos iniciales
mkdir ­p  src/MiEmpresa/MiPrimerBundle/DataFixtures/ORM




Crear un archivo para esos datos iniciales
src/MiEmpresa/MiPrimerBundle/DataFixtures/ORM/MisDatosIniciales.php




                                                      

      - PR5
...UN PRIMER PROYECTO EN SYMFONY2

scr                                                                                     CONFIGURACIÓN
                                                                             MODELO­VISTA­CONTROLADOR
Continuamos preparando el modelo
Agrege 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
...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:create

Este comando debe ejecutarlo estando en la carpeta /sf2­pr5
                                                

       - PR5
...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:create

Este comando debe ejecutarlo estando en la carpeta /sf2­pr5
                                                

       - PR5
...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 MiPrimerBundle


Este comando debe ejecutarlo estando en la carpeta /sf2­pr5
                                                

        - PR5
...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:load

Este comando debe ejecutarlo estando en la carpeta /sf2­pr5
                                                

       - PR5
...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
...UN PRIMER PROYECTO EN SYMFONY2

scr                                                                                                          CONFIGURACIÓN
                                                                                                  MODELO­VISTA­CONTROLADOR
El Controlador
Crear el directorio de la vista
mkdir ­p src/MiEmpresa/MiPrimerBundle/Controller
Crear y editar el archivo MiPrimerController.php
src/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
...UN PRIMER PROYECTO EN SYMFONY2

scr                                                                          CONFIGURACIÓN
                                                                  MODELO­VISTA­CONTROLADOR
La Vista
Crear el directorio de la vista
mkdir ­p src/MiEmpresa/MiPrimerBundle/Resources/views/MiPrimer/



Crear y editar el archivo index.html.php
src/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
...UN PRIMER PROYECTO EN SYMFONY2

scr                                                                                CONFIGURACIÓN
                                                                        MODELO­VISTA­CONTROLADOR
El Routing del bundle
Crear el directorio de la configuración del bundle
mkdir ­p  src/MiEmpresa/MiPrimerBundle/Resources/config



Crear y editar el archivo routing.yml
mkdir ­p src/MiEmpresa/MiPrimerBundle/Resources/config/routing.yml

                      MiPrimer:
                          pattern:     /MiPrimer
                          defaults: { _controller: MiPrimerBundle:MiPrimer:index}




                                                        

      - PR5
...UN PRIMER PROYECTO EN SYMFONY2

                                                                     CONFIGURACIÓN
                                                          MODELO­VISTA­CONTROLADOR

Limpiamos el cache de Symfony2
Ejecutando 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

Más contenido relacionado

La actualidad más candente

Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyJuan Eladio Sánchez Rosas
 
7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHPJavier Peñaranda
 
Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3UVM
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++Idalia Tristan
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoRightster
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPJuan Belón Pérez
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++MartinCetis109
 
Symfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones webSymfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones webEsteban Saavedra
 
C# Nuevas características en C# 6
C# Nuevas características en C# 6C# Nuevas características en C# 6
C# Nuevas características en C# 6HARUN PEHLIVAN
 

La actualidad más candente (17)

Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfony
 
Practicas
PracticasPracticas
Practicas
 
7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP7 Ventajas de Funciones en PHP
7 Ventajas de Funciones en PHP
 
MVC en CakePHP 2.0
MVC en CakePHP 2.0MVC en CakePHP 2.0
MVC en CakePHP 2.0
 
CakePHP
CakePHPCakePHP
CakePHP
 
Compilación de programas
Compilación de programasCompilación de programas
Compilación de programas
 
Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++
 
Tercera unidad
Tercera unidadTercera unidad
Tercera unidad
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseño
 
Lolo
LoloLolo
Lolo
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHP
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++Presentacion de la_estructura_de_c++
Presentacion de la_estructura_de_c++
 
Symfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones webSymfony Framework para el desarrollo de aplicaciones web
Symfony Framework para el desarrollo de aplicaciones web
 
C# Nuevas características en C# 6
C# Nuevas características en C# 6C# Nuevas características en C# 6
C# Nuevas características en C# 6
 

Destacado (7)

Borrador Proyecto App SERAM
Borrador Proyecto App SERAMBorrador Proyecto App SERAM
Borrador Proyecto App SERAM
 
Proyecto final
Proyecto finalProyecto final
Proyecto final
 
Hoja inscripción
Hoja inscripciónHoja inscripción
Hoja inscripción
 
Presentacion app help desk
Presentacion app help deskPresentacion app help desk
Presentacion app help desk
 
Presentación completa módulo Proyecto
Presentación completa módulo ProyectoPresentación completa módulo Proyecto
Presentación completa módulo Proyecto
 
Fracturas expuestas
Fracturas expuestasFracturas expuestas
Fracturas expuestas
 
Anatomia de-bovino
Anatomia de-bovinoAnatomia de-bovino
Anatomia de-bovino
 

Similar a Crea tu primer proyecto en Symfony2

Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosDesymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosJavier Eguiluz
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Yaismel Miranda
 
Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasoshydras_cs
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoCarlos Granados
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Ricard Luquero
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
Desymfony 2011 - Tutorial #5: Backend
Desymfony 2011 - Tutorial #5: BackendDesymfony 2011 - Tutorial #5: Backend
Desymfony 2011 - Tutorial #5: BackendJavier Eguiluz
 
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y GitDesplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Gitmoisesgallego
 
Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Telefónica
 
Entornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppetEntornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppetVicent Soria Durá
 
Proyecto H3m Unisiga2 Proceso Instalacion 5 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 5 De 5Proyecto H3m Unisiga2 Proceso Instalacion 5 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 5 De 5Franklin Calle Zapata
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientosRichard Robalino
 
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016Telefónica
 
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5Franklin Calle Zapata
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2Raul Fraile
 
Introducción a Zend Framework
Introducción a Zend FrameworkIntroducción a Zend Framework
Introducción a Zend FrameworkIrontec
 

Similar a Crea tu primer proyecto en Symfony2 (20)

Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosDesymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
 
Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasos
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápido
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
 
Backend (sf2Vigo)
Backend (sf2Vigo)Backend (sf2Vigo)
Backend (sf2Vigo)
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Symfony
SymfonySymfony
Symfony
 
Desymfony 2011 - Tutorial #5: Backend
Desymfony 2011 - Tutorial #5: BackendDesymfony 2011 - Tutorial #5: Backend
Desymfony 2011 - Tutorial #5: Backend
 
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y GitDesplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
 
Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2Cómo explotar EternalBlue en Windows Server 2012 R2
Cómo explotar EternalBlue en Windows Server 2012 R2
 
Entornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppetEntornos de desarrollo para symfony2 con vagrant y puppet
Entornos de desarrollo para symfony2 con vagrant y puppet
 
Proyecto H3m Unisiga2 Proceso Instalacion 5 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 5 De 5Proyecto H3m Unisiga2 Proceso Instalacion 5 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 5 De 5
 
Funciones y procedimientos
Funciones y procedimientosFunciones y procedimientos
Funciones y procedimientos
 
Composer & SemVer
Composer & SemVerComposer & SemVer
Composer & SemVer
 
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
Cómo explotar EternalRomance & EternalSynergy en Windows Server 2016
 
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2
 
Introducción a Zend Framework
Introducción a Zend FrameworkIntroducción a Zend Framework
Introducción a Zend Framework
 

Último

TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...univerzalworld
 
Mujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdfMujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdfKeilly Merlo
 
Matemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdfMatemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdfFAUSTODANILOCRUZCAST
 
Code name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdfCode name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdfnaladosol
 
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...patriciooviedo3
 
Code name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdfCode name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdfnaladosol
 

Último (6)

TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
TRIFOLIO DIA DE LA TIERRA.pdf Perdida libertad y educación social. • Pérdida ...
 
Mujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdfMujeres que corren con los lobos en la noche.pdf
Mujeres que corren con los lobos en la noche.pdf
 
Matemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdfMatemática universitaria de AlgebraLineal.pdf
Matemática universitaria de AlgebraLineal.pdf
 
Code name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdfCode name Anastasia parte - 1(1)-páginas-3.pdf
Code name Anastasia parte - 1(1)-páginas-3.pdf
 
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
(HOTD) Las Grandes Casas de Westeros y su estado previo a la Danza de los Dra...
 
Code name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdfCode name Anastasia parte - 1(1)-páginas-1.pdf
Code name Anastasia parte - 1(1)-páginas-1.pdf
 

Crea tu primer proyecto en Symfony2

  • 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­CONTROLADOR ANTES DE COMENZAR CON SYMFONY2 Su 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­CONTROLADOR CREAR “UNA CARPETA” PARA LOS PROYECTOS EN ESTA CARPETA ESTARAN NUESTRAS APLICACIONES Y LOS BUNDLES QUE LA COMPONEN Definir el nombre de nuestra carpeta de proyectos para este ejemplo vamos a utilizar el nombre sf2­pr5 Ubicarse en la carpeta de ejecución del servidor web La 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­CONTROLADOR NOTAS DE CONFIGURACIÓN Puede clonar a través del GIT otros repositorios importantes del Sf2  como su documentación Para ver todos repositorios oficiales del proyecto visite    http://github.com/symfony     - PR5
  • 6. ...UN PRIMER PROYECTO EN SYMFONY2 CONFIGURACIÓN MODELO­VISTA­CONTROLADOR 1.­ PROBAR LA INSTALACIÓN SYMFONY2        http://localhost/sf2­pr5/web/app_dev.php 2.­ 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 SYMFONY2 app CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Registrar el namespaces app/autoload.php Dentro 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 SYMFONY2 app CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Configuración Global routing.yml app/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 SYMFONY2 scr CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Preparar el modelo Edite el archivo MiPrimerEntidad.php <?php src/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 SYMFONY2 scr CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Continuamos preparando el modelo Crear un directorio para los datos iniciales mkdir ­p  src/MiEmpresa/MiPrimerBundle/DataFixtures/ORM Crear un archivo para esos datos iniciales src/MiEmpresa/MiPrimerBundle/DataFixtures/ORM/MisDatosIniciales.php     - PR5
  • 19. ...UN PRIMER PROYECTO EN SYMFONY2 scr CONFIGURACIÓN MODELO­VISTA­CONTROLADOR Continuamos preparando el modelo Agrege 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:create Este 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:create Este 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 MiPrimerBundle Este 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:load Este 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 SYMFONY2 scr CONFIGURACIÓN MODELO­VISTA­CONTROLADOR El Controlador Crear el directorio de la vista mkdir ­p src/MiEmpresa/MiPrimerBundle/Controller Crear y editar el archivo MiPrimerController.php src/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 SYMFONY2 scr CONFIGURACIÓN MODELO­VISTA­CONTROLADOR La Vista Crear el directorio de la vista mkdir ­p src/MiEmpresa/MiPrimerBundle/Resources/views/MiPrimer/ Crear y editar el archivo index.html.php src/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 SYMFONY2 scr CONFIGURACIÓN MODELO­VISTA­CONTROLADOR El Routing del bundle Crear el directorio de la configuración del bundle mkdir ­p  src/MiEmpresa/MiPrimerBundle/Resources/config Crear y editar el archivo routing.yml mkdir ­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­CONTROLADOR Limpiamos el cache de Symfony2 Ejecutando 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