PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
Mi primer programa en Symfony2
1. ...UN PRIMER PROYECTO EN SYMFONY2
SYMFONY2
PRIMER PROYECTO EN SYMFONY2
CÉSAR HERNÁNDEZ
dpcesar@gmail.com
Version 00021211
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
3. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
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
4. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
CREAR “UNA CARPETA” PARA LOS PROYECTOS
EN ESTA CARPETA ESTARAN TODOS NUESTROS BUNDLES, PROYECTOS, APLICACIONES Y PRUEBAS
Definir el nombre de nuestra carpeta de proyectos
para este ejemplo vamos a utilizar el nombre proyectossf2
Ubicarse en la carpeta de ejecución del servidor web
La 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
5. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
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
6. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
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
7. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
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 !
8. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
Crear el bundle MiEjemplo
Crear el directorio del Bundle
mkdir p src/Application/MiEjemploBundle
Crear y editar el archivo MiEjemploBundle.php
src/Application/MiEjemploBundle/MiEjemploBundle.php
Agrege el siguiente código
<?php
namespace ApplicationMiEjemploBundle;
use SymfonyComponentHttpKernelBundleBundle;
class MiEjemploBundle extends Bundle
{
}
9. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
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
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 ApplicationMiEjemploBundleMiEjemploBundle(),
10. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
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...
Cree el directorio Entity
mkdir p src/Application/MiEjemploBundle/Entity
<?php
Este es un ejemplo básico de la
namespace ApplicationMiEjemploBundleEntity;
entidad que definiremos en la
siguiente lamina class MiEjemplo
{
protected $id;
public $title;
public $body;
}
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 )
11. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
Preparar el modelo MODELOVISTACONTROLADOR
<?php
Cree el directorio de la Entidad
mkdir src/Application/MiEjemploBundle/Entity namespace ApplicationMiEjemploBundleEntity;
/**
* @orm:Entity
Edite el archivo MiEjemplo.php */
src/Application/MiEjemploBundle/Entity/MiEjemplo.php class MiEjemplo
{
/**
* @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;
}
12. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
Continuamos preparando el modelo
Crear el directorio de la Entidad(es)
mkdir p src/Application/MiEjemploBundle/DataFixtures/ORM
Crear y editar el archivo MiEjemplo.php
src/Application/MiEjemploBundle/DataFixtures/ORM/MiEjemplo.php
13. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
Continuamos preparando el modelo
Agrege el siguiente código
<?php
namespace ApplicationMiEjemploBundleDataFixturesORM;
use DoctrineORMEntityManager,
DoctrineCommonDataFixturesFixtureInterface,
ApplicationMiEjemploBundleEntityMiEjemplo;
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();
}
}
14. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
Finalizamos la preparación del modelo
Creación de la Base de Datos
## Doctrine Configuration
Edite el archivo Config.yml #doctrine.dbal:
app/config/config.yml # dbname: xxxxxxxx
# user: xxxxxxxx
# password: ~
Alli encontrará el siguiente código >
#doctrine.orm:
# auto_generate_proxy_classes: %kernel.debug%
# mappings:
# HelloBundle: ~
# Doctrine Configuration
doctrine.dbal:
dbname: MiEjemplo
user: root
Actualicelo asi > password: root
doctrine.orm:
auto_generate_proxy_classes: %kernel.debug%
mappings:
MiEjemploBundle: ~
HelloBundle: ~
15. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
Ejecute los siguientes comandos
php app/console doctrine:database:create
php app/console doctrine:schema:create
php app/console doctrine:generate:entities
php app/console doctrine:data:load
16. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
La Vista
Crear el directorio de la vista
mkdir p src/Application/MiEjemploBundle/Resources/views/MiEjemplo/
Crear y editar el archivo index.php
src/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>
17. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
El Controlador
Crear el directorio del Controlador
mkdir p src/Application/MiEjemploBundle/Controller
Crear y editar el archivo MiEjemploController.php
src/Application/MiEjemploBundle/Controller/MiEjemploController.php
<?php
namespace ApplicationMiEjemploBundleController;
use SymfonyBundleFrameworkBundleControllerController;
class MiEjemploController extends Controller
{
public function indexAction()
{
$em = $this>container>get('doctrine.orm.entity_manager');
$MiEjemplo = $em>createQuery('SELECT b FROM ApplicationMiEjemploBundleEntityMiEjemplo b ORDER BY b.body DESC')>execute();
return $this>render('MiEjemploBundle:MiEjemplo:index.php', array('MiEjemplo' => $MiEjemplo));
}
}
18. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
Terminando la configuración de la vista El Routing
Crear el directorio de configuración de la vista del Bundle
mkdir p src/Application/MiEjemploBundle/Resources/config/
Crear y editar el archivo routing.yml
mkdir 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 Sf2
gedit app/config/routing.yml
MiEjemplo:
resource: MiEjemploBundle/Resources/config/routing.yml
19. ...UN PRIMER PROYECTO EN SYMFONY2
CONFIGURACIÓN
MODELOVISTACONTROLADOR
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/proyectossf2/web/app_dev.php/MiEjemplo