mi primer programa en symfony2

19
 ...UN PRIMER PROYECTO EN SYMFONY2 ...UN PRIMER PROYECTO EN SYMFONY2 CÉSAR HERNÁNDEZ SYMFONY2 PRIMER PROYECTO EN SYMFONY2 [email protected] Version 0002-12-11

Upload: cesar-hernandez

Post on 14-Jun-2015

14.780 views

Category:

Technology


0 download

DESCRIPTION

Mi primer programa en Symfony2, version PR4

TRANSCRIPT

Page 1: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

CÉSAR HERNÁNDEZ

SYMFONY2PRIMER PROYECTO EN SYMFONY2

[email protected]

Version 0002­12­11

Page 2: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...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 Symfony2Symfony2; y; y crear un 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

Page 3: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

ANTES 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

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 4: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

CREAR “UNA CARPETA” PARA LOS PROYECTOSEN ESTA CARPETA ESTARAN TODOS NUESTROS BUNDLES, PROYECTOS, APLICACIONES Y PRUEBAS

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

Ubicarse en la carpeta de ejecución del servidor webLa carpeta de proyectos debe estar una ruta con permisos de ejecución Usualmente en: linux “/var/www” o en windows  “c:/inetpub/web”

A continuación ejecutamos el siguiente comando

  git clone https://github.com/symfony/symfony­sandbox.git proyectos­sf2   este comando creara la carpeta proyectos­sf2 y   de forma automatica se descargará la “última versión”  y la “mas actualizada”   del framework symfony2

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 5: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

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

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 6: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

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

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

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 7: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

Vamos crear el bundle MiEjemplo

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  como  por ejemplo la estructura basica de un bundle

Configurar el Entorno de trabajo, crear los archivos basicos del modelo­vista­controlador

Conectarse a una base de datos y crear una tabla usando en Doctrine2

Cargar algunos datos iniciales a la base datos

Y si todo sale bien... mostrar una pagina en el navegador !

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 8: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

Crear el bundle MiEjemplo

Crear el directorio del Bundlemkdir ­p src/Application/MiEjemploBundle

Crear y editar el archivo MiEjemploBundle.phpsrc/Application/MiEjemploBundle/MiEjemploBundle.php

Agrege el siguiente código

<?php

namespace Application\MiEjemploBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class MiEjemploBundle extends Bundle{}

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 9: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

Registrar el bundle en AppKernel.phpapp/AppKernel.php

Dentro del archivo AppKernel.php existe una función llamada RegisterBundles

En esta función esta definido un arreglo de Bundles

Los valores con los que se inicializa ese arreglo de Bundles, estan separados en secciones, demarcadas  por comentarios

Ahora hay  que ubicar el comentario// Register your Bundles

Y registrar el bundle que acabamos de crear, agregando el siguiente codigo

new Application\MiEjemploBundle\MiEjemploBundle(),

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 10: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

<?php

namespace Application\MiEjemploBundle\Entity;

class MiEjemplo{  protected $id;  public $title;  public $body;}

Cree el directorio Entitymkdir ­p src/Application/MiEjemploBundle/Entity

CONFIGURACIÓNMODELO­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...

Este es un ejemplo básico de la entidad que definiremos en la 

siguiente lamina

Nota: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 )

Page 11: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

Preparar el modelo

<?php

namespace Application\MiEjemploBundle\Entity;

/** * @orm:Entity */class MiEjemplo{    /**     * @orm:Id     * @orm:Column(type="integer")     * @orm:GeneratedValue(strategy="IDENTITY")     */    protected $id;     /**     * @orm:Column(type="string")     * @orm:Column(length="255")     */    private $title;

    /**     * @orm:Column(type="string")     * @orm:Column(length="255")     */    private $body;}

Edite el archivo MiEjemplo.phpsrc/Application/MiEjemploBundle/Entity/MiEjemplo.php

Agrege el siguiente código

Cree el directorio de la Entidadmkdir src/Application/MiEjemploBundle/Entity

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 12: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

Continuamos preparando el modelo

Crear el directorio de la Entidad(es)

mkdir ­p  src/Application/MiEjemploBundle/DataFixtures/ORM

Crear y editar el archivo MiEjemplo.phpsrc/Application/MiEjemploBundle/DataFixtures/ORM/MiEjemplo.php

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 13: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

Continuamos preparando el modeloAgrege el siguiente código

<?phpnamespace Application\MiEjemploBundle\DataFixtures\ORM;

use Doctrine\ORM\EntityManager,      Doctrine\Common\DataFixtures\FixtureInterface,      Application\MiEjemploBundle\Entity\MiEjemplo;

class LoadEjemplos implements FixtureInterface{    public function load($em)    {        $MiEjemplo1 = new MiEjemplo();        $MiEjemplo1­>setTitle('Cesar Hernandez');        $MiEjemplo1­>setBody('Ing. De Sistemas, graduado en la Universidad Bicentenaria de Aragua');        $em­>persist($MiEjemplo1);

        $MiEjemplo2 = new MiEjemplo();        $MiEjemplo2­>setTitle('Sebastian Hernandez');        $MiEjemplo2­>setBody('Estudiante de Maternal, nacido en Lecheria, Estado Anzoátegui');        $em­>persist($MiEjemplo2);

       $em­>flush();    }}

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 14: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

Finalizamos la preparación del modelo 

Creación de la Base de Datos## Doctrine Configuration#doctrine.dbal:#    dbname:   xxxxxxxx#    user:     xxxxxxxx#    password: ~

#doctrine.orm:#    auto_generate_proxy_classes: %kernel.debug%#    mappings:#        HelloBundle: ~

# Doctrine Configurationdoctrine.dbal:    dbname:   MiEjemplo    user:     root    password: root

doctrine.orm:    auto_generate_proxy_classes: %kernel.debug%    mappings:        MiEjemploBundle: ~        HelloBundle: ~

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Edite el archivo Config.ymlapp/config/config.yml

Alli encontrará el siguiente código  ­­­>

Actualicelo asi ­­­­>

Page 15: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

php app/console doctrine:database:create

php app/console doctrine:schema:create

php app/console doctrine:generate:entities

php app/console doctrine:data:load

Ejecute los siguientes comandos

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 16: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

La Vista

Crear el directorio de la vistamkdir ­p src/Application/MiEjemploBundle/Resources/views/MiEjemplo/

Crear y editar el archivo index.phpsrc/Application/MiEjemploBundle/Resources/Resources/views/MiEjemplo/index.php

<?php  $view­>extend('::layout.php') ?>

<h1> MiEjemplo </h1>

<ul class='MiEjemplo'><?php foreach($MiEjemplo as $MiEjemplo): ?>  <li>     <h2><?php echo $MiEjemplo­>GetTitle(); ?></h2>     <p><?php echo $MiEjemplo­>GetBody(); ?></p>  </li><?php endforeach; ?></ul>

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 17: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

El Controlador

Crear el directorio del Controladormkdir ­p src/Application/MiEjemploBundle/Controller

Crear y editar el archivo MiEjemploController.phpsrc/Application/MiEjemploBundle/Controller/MiEjemploController.php

<?php

namespace Application\MiEjemploBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class MiEjemploController extends Controller{  public function indexAction()  {    $em = $this­>container­>get('doctrine.orm.entity_manager');

    $MiEjemplo = $em­>createQuery('SELECT b FROM Application\MiEjemploBundle\Entity\MiEjemplo b ORDER BY b.body DESC')­>execute();

    return $this­>render('MiEjemploBundle:MiEjemplo:index.php', array('MiEjemplo' => $MiEjemplo));  }}

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 18: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

Terminando la configuración de la vista ­ El Routing

Crear el directorio de configuración de la vista del Bundlemkdir ­p src/Application/MiEjemploBundle/Resources/config/

Crear y editar el archivo routing.ymlmkdir ­p src/Application/MiEjemploBundle/Resources/config/routing.yml

MiEjemplo:    pattern:     /MiEjemplo    defaults: { _controller: MiEjemploBundle:MiEjemplo:index}

Integramos el routing.yml del bundle al archivo routing.yml principal del Sf2gedit app/config/routing.yml

MiEjemplo:    resource:  MiEjemploBundle/Resources/config/routing.yml

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR

Page 19: Mi primer programa en Symfony2

   

...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2

Limpiamos 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/proyectos­sf2/web/app_dev.php/MiEjemplo

CONFIGURACIÓNMODELO­VISTA­CONTROLADOR