View
14.779
Download
0
Category
Preview:
DESCRIPTION
Mi primer programa en Symfony2, version PR4
Citation preview
...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2
CÉSAR HERNÁNDEZ
SYMFONY2PRIMER PROYECTO EN SYMFONY2
dpcesar@gmail.com
Version 00021211
...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
...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ÓNMODELOVISTACONTROLADOR
...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 proyectossf2
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/symfonysandbox.git proyectossf2 este comando creara la carpeta proyectossf2 y de forma automatica se descargará la “última versión” y la “mas actualizada” del framework symfony2
CONFIGURACIÓNMODELOVISTACONTROLADOR
...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ÓNMODELOVISTACONTROLADOR
...UN PRIMER PROYECTO EN SYMFONY2...UN PRIMER PROYECTO EN SYMFONY2
1. PROBAR LA INSTALACIÓN SYMFONY2 http://localhost/proyectossf2/web/app_dev.php
2. CHEQUEAR EL ENTORNO DE TRABAJO SF2 http://localhost/proyectossf2/web/check.php
CONFIGURACIÓNMODELOVISTACONTROLADOR
...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 modelovistacontrolador
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ÓNMODELOVISTACONTROLADOR
...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ÓNMODELOVISTACONTROLADOR
...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ÓNMODELOVISTACONTROLADOR
...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ÓNMODELOVISTACONTROLADOR
Definición de las tablas de la Base de Datos
El modelo entidadrelació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: modelovistacontrolador )
...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ÓNMODELOVISTACONTROLADOR
...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ÓNMODELOVISTACONTROLADOR
...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ÓNMODELOVISTACONTROLADOR
...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ÓNMODELOVISTACONTROLADOR
Edite el archivo Config.ymlapp/config/config.yml
Alli encontrará el siguiente código >
Actualicelo asi >
...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ÓNMODELOVISTACONTROLADOR
...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ÓNMODELOVISTACONTROLADOR
...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ÓNMODELOVISTACONTROLADOR
...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ÓNMODELOVISTACONTROLADOR
...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/proyectossf2/web/app_dev.php/MiEjemplo
CONFIGURACIÓNMODELOVISTACONTROLADOR
Recommended