Symfony2 Formacion y primeros pasos
description
Transcript of Symfony2 Formacion y primeros pasos
![Page 1: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/1.jpg)
Symfony 2
Formación y primeros pasos
Por: Sonia Benítez MartínezWeb Developer@Neithar
![Page 2: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/2.jpg)
Índice I● Introducción a Symfony● Características● Recordando MVC y ORM● Twig● YML● Gestionando dependencias con Composer● Instalando Composer (Windows)● Instalando Composer (Linux)● Descargando Symfony2(Windows)● Descargando Symfony2(Linux)
![Page 3: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/3.jpg)
Índice II● Consideraciones● Estructura del proyecto● Controladores Frontales● Entornos● Caché● Profiler● Mensajes de Error● Aplicando la filosofía de Symfony● Entidades● ¿Qué son los Bundles?
![Page 4: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/4.jpg)
Índice III● Bundles en Symfony● El comando Console● Crear un Bundle● Creando el Esquema● La Base de Datos● El enrutador (Routing Component)● La cara oculta del Routing● Rutas● Patrón de nomenclatura para controladores● Comandos Útiles● Bibliografía
![Page 5: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/5.jpg)
Introducción a Symfony● Symfony es un Framework PHP desarrollado en PHP 5.3● Arquitectura MVC
● Creado por la comunidad liderada por Fabien Potencier ● Integra Frameworks como:
o Doctrineo Twig
● Modelo: Doctrine, ORM basado en Hibernate● Configuraciones en:
o YAML, XML, PHP
![Page 6: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/6.jpg)
Características● Open-source● Muy flexible● Extensible● Completo● Rápido● Alto rendimiento● Gran comunidad y documentación multiidioma● Basado en buenas prácticas
![Page 7: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/7.jpg)
Recordando MVC (Modelo - Vista- Controlador)
● Vista: Visualización de la información, diseño, colores, estilos
● Modelado: Capa que se responsabiliza de la manipulación de los datos
● Controlador: Intermediario entre los dos anteriores: Procesa y muestra los datos obtenidos por el Modelo.
![Page 8: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/8.jpg)
ORM (Object-Relational Mapping)
● Doctrine:o Framework para tratar con BBDDo Conexióno Generación SQLo Manipulación datoso Transaccioneso Desconexión
![Page 9: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/9.jpg)
Twig I
o Motor y lenguaje de plantillas para PHP utilizado por defecto en Symfony2 Una plantilla es un archivo de texto que puede ser generado en
el formato que se necesite (HTML, CSS, XML, ...)o Rápido: Twig minimiza la cantidad de código necesaria para producir
el mismo efecto que con PHP puro.o Seguro: Twig sólo afecta a la construcción del template, no a la lógica
de negocio, impidiendo la mala gestión de datos o errores.o Flexible: Permite al desarrollador definir sus propias etiquetas y
filtros personalizados.o Sistema de herencia de plantillas y cacheo de plantillas
![Page 10: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/10.jpg)
Twig II
o PHP es el mismo motor de templates (muy largo de escribir).
o Ejemplo:<?php echo htmlspecialchars($var, ENT_QUOTES, ‘UTF-8’); ?>
o Ésto en Twig:{{ var|e }}
¿Por qué otro motor de templates?
![Page 11: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/11.jpg)
Twig III : Sintaxis orientada a Templates
o Hay muchos accesos directos (Shortcuts) para realizar acciones más comunes.
o Un ejemplo de iteración sobre un array:
{% for user in users %}
{{ user.name }}
{% else %}
No users have been found.
{% endfor %}
![Page 12: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/12.jpg)
Twig IV : Algunas Funcionalidades
o Con Twig hay todas las opciones posibles a la hora de crear templates: existe herencia múltiple, bloques de código, escape automático, entre muchas otras funcionalidades:
o Ejemplos:{% extends “MDWDemoBundle:Default:index.html.twig” %}
{% block content %}
Content of the page…
{% endblock %}
![Page 13: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/13.jpg)
Twig V : Un poco de sintaxis
● Comentarios {# Comentario #}→
● Imprimir {{ mostrar_algo }} <?php echo $mostrar_algo; ?> → →
● Tags {% hacer_algo %} {% if online == false %} → →
<p> Mainentance! </p>
{% endif %}
● Filtros {{ ‘my first car’|capitalize }} →
● Funciones {{ random(5) }}→
● Tests {# Se evalúa a true si la variable es null, false o cadena vacía #}→
{% if foo is empty %} … {% endif %}
![Page 14: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/14.jpg)
YAML I
● Lenguaje muy sencillo que permite describir los datos como en XML, pero en una sintaxis mucho más sencilla.
● Presenta un formato especialmente útil para describir datos que pueden ser transformados en arrays simples y asociativos.
● Ejemplo:
o $casa = array(‘familia’ => array(‘apellido’ => ‘García’, ‘padres’ => array(‘Antonio, María’), ‘hijos’ => array(‘Jose’, Manuel, Carmen)), dirección => array(‘numero’ => 34, ‘calle’ => ‘Gran Via’, ‘ciudad’ => ‘Barcelona’, ‘codigopostal’ => ‘12345’ ) );
![Page 15: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/15.jpg)
YAML II
![Page 16: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/16.jpg)
Gestionando dependencias con Composer
Vale, pero… ¿Qué es composer?
● Composer es un Gestor de Dependencias PHP● Contiene una BBDD online de librerías de terceros● La BBDD se centraliza en el repositorio Packagist● 1 único archivo de config descarga n librerías→● Ǝ Librerías como: Symfony, Wordpress, Drupal, etc.
![Page 17: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/17.jpg)
Instalando Composer (W) IPartiendo de: Xampp / Wampp OK →
1. Descargar composer: https://getcomposer.org/installer2. Guardar como instalador.php en ruta donde crearemos los proyectos Symfony2 (Ej:
C:\www\)3. Abrir cmd, situarse sobre ruta (C:\www\) y ejecutar: php instalador.php
![Page 18: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/18.jpg)
Instalando Composer (W) II3.1. Si no va: Añadir al final del path de variables del sistema (equipo botón derecho →propiedades configuración avanzada del sistema variables de entorno path → → → →añadir al final: ;C:\xampp\php; 4. Una vez hecho el paso 3, ya tendremos composer instalado:
![Page 19: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/19.jpg)
Instalando Composer (W) III5. Para poder ejecutar composer desde varios sitios moverlo a xampp/php →6. También crear en xampp/php un fichero composer.bat que contenga:
@ECHO OFF php "%~dp0composer.phar" %*
7. Para actualizar composer: Ejecutar en consola: composer self-update
![Page 20: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/20.jpg)
Instalando Composer (L) IPartiendo de: LAMP OK →
1. Abrir consola de comandos y acceder al directorio raíz del proyecto Sf22. Ejecutar el comando:
$ curl -s https://getcomposer.org/installer | php3. Si todo ha ido bien, en el directorio raíz del proyecto Sf2 aparecerá un archivo
llamado composer.phar. Para comprobar que se ha instalado correctamente, ejecuta el siguiente comando que muestra el menú de opciones de Composer:$ php composer.phar
4. Instalar Composer de esta manera es correcto, pero obliga a realizar una nueva instalación para cada proyecto Symfony2. Si tienes muchos proyectos, es mucho mejor que instales Composer de forma global en tu ordenador, para que todos los proyectos utilicen la misma versión de Composer.
![Page 21: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/21.jpg)
Instalando Composer (L) II5. Para instalar Composer globalmente, mover el archivo composer.phar a algún directorio ejecutable del sistema, como por ejemplo:
$ sudo mv composer.phar /usr/local/bin/composer
6. Comprobar que todo funciona bien ejecutando el comando composer sin opciones desde cualquier directorio del sistema.
7. La instalación global de Composer también facilita su mantenimiento, ya que sólo hay que ejecutar el siguiente comando para actualizar la versión de Composer de todos los proyectos:
$ sudo composer self-update
![Page 22: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/22.jpg)
Descargando Symfony 2 (W)● Si no tienes Git ¡Instálalo! (→ http://msysgit.github.io/)● Si ya tienes Git ¡Vamos!→
Para instalar Symfony 2 en consola ejecutaremos el comando:php composer.phar create-project symfony/framework-standard-edition C:/www/nombreProyecto/ 2.5.0
1. composer: Para ejecutar las funcionalidades de composer2. create-project:Ésta funcionalidad le dice a composer que cree un nuevo proyecto3. symfony/framework-standard-edition:Con ésto especificamos a composer que queremos
instalar la versión standar edition de Symfony del packagist4. path/: Ruta donde se tiene que instalar el proyecto5. 2.5.0: Versión de Symfony a instalar
Para comprobar si el equipo está preparado para ejecutar Symfony 2, una vez finalizado ejecutaremos el comando:php app/check.php
![Page 23: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/23.jpg)
![Page 24: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/24.jpg)
Descargando Symfony 2 (L) I● Si no tienes Git ¡Instálalo! (→ http://msysgit.github.io/)● Si ya tienes Git ¡Vamos!→
Para instalar Symfony 2 en consola ejecutaremos el comando:$ composer create-project symfony/framework-standard-edition <directorio> 2.5.0
1. composer: Para ejecutar las funcionalidades de composer2. create-project:Ésta funcionalidad le dice a composer que cree un nuevo proyecto3. symfony/framework-standard-edition:Con ésto especificamos a composer que queremos
instalar la versión standar edition de Symfony del packagist4. <directorio>: Ruta donde se tiene que instalar el proyecto5. 2.5.0: Versión de Symfony a instalar
Para comprobar si el equipo está preparado para ejecutar Symfony 2, ejecutaremos el comando:php app/check.php
![Page 25: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/25.jpg)
Descargando Symfony 2 (L) IISi todo ha funcionado bien, Symfony 2 ya está instalado correctamente. Para comprobarlo, se debe ejecutar el siguiente comando de consola directamente en la raíz del directorio donde se ha instalado Symfony:
$ php app/console
La consola debería mostrar una lista muy larga con todos los comandos disponibles en las aplicaciones Symfony2.
![Page 26: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/26.jpg)
Consideraciones I● Algunas configuraciones:
o php.ini: habilitar php_openssl.dll (extension=php_openssl.dll)o habilitar intl extensiono instalar acelerador PHP (APC)o los directorios app/cache y app/logs deben tener permisos de
escritura● Cambios en apache configurar virtualhost o cambiar en httpd.conf:→
o DocumentRoot “C:/www/nombreProyecto/web”o Directory “C:/www/nombreProyecto/web”
● Si todo ha ido bien...
![Page 27: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/27.jpg)
![Page 28: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/28.jpg)
Consideraciones II● Hasta que no se resuelvan los requerimientos obligatorios, no
podremos ingresar a:o http://localhost/nombreProyecto/web/app_dev.php
Y ver la pantalla de Bienvenida:
![Page 29: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/29.jpg)
![Page 30: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/30.jpg)
Estructura del Proyecto I● app\: Contiene la configuración de
todo el proyecto. Por lo general sólo existe una aplicación. El concepto de tener más de una aplicación en ésta versión se conoce como Bundle
● app\config\: Guarda todos los archivos de configuración de la aplicación
● app\cache\: Contiene todos los archivos generados por las numerosas cachés de Symfony2 (clases, enrutamiento, plantillas, entidades, validación, etc.). Junto con el directorio app\logs\ es el único en el que Symfony2 debe tener permisos de escritura.
![Page 31: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/31.jpg)
Estructura del Proyecto II● app\logs\: Contiene archivos de log por la app (tanto dev, prod, test, etc.). Junto
con el directorio app\cache\ es el único en el que Symfony2 debe tener permisos de escritura.
● app\Resources\: Almacena recursos muy especiales (Como alguna librería Java) o recursos utilizados por el proyecto a nivel global (layouts de las plantillas)
● bin\: Dentro existe el script vendors.sh que se utiliza para actualizar el framework vía consola
● src\: Carpeta donde irá todo nuestro código. Residen los Bundles.● vendor\: Core del Framework y librerías de terceros● web\: Contendrá los archivos públicos del proyecto (js, css, etc). También se
encuentran los controladores frontales.
![Page 32: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/32.jpg)
Controladores Frontales I● Un controlador frontal es un archivo mediante el que se accede a
una página.● Symfony maneja entornos, lo que indica:
o Mismas páginas Distintas configuraciones→● Entornos configurados por defecto:
o Desarrollo: http://localhost/nombreProyecto/web/app_dev.php
o Producción: http://localhost/nombreProyecto/web/app.phpo Test
![Page 33: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/33.jpg)
Controladores Frontales II● Los archivos que no estén dentro de la carpeta web\ no pueden y no
deben ser accedidos por navegador.● Las páginas y programas de dentro la carpeta src\ no son directamente
accedidos por el navegador, sino a través de los controladores frontales.● Cualquier petición (request) que llegue a la aplicación para solicitar una
página específica debe ser sobre nuestros controladores y no directamente a ellas. Esto es debido a que los controladores frontales levantan todas la utilidades necesarias del Framework y luego invocan a la página solicitada.
![Page 34: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/34.jpg)
Entornos● Desarrollo
o http://localhost/nombreProyecto/web/app_dev.php● Producción
o http://localhost/nombreProyecto/web/app.phpDiferencias:● Desarrollo: Configuración para Desarrollador● Producción: Optimizado para usuarios finales
Anotación:● En caso de que, al ingresar a la URL de producción y aparezca un error se
puede probar a eliminar el contenido de la carpeta app\cache\
![Page 35: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/35.jpg)
Caché● Symfony pre-compila las páginas y las almacena en caché.● Los archivos se generan en PHP● Los archivos se guardan dentro de la carpeta app\cache
Para producción:● Una vez creados los archivos, las páginas son accedidas por caché
Para desarrollo:● La caché se genera por cada petición de las páginas para no tener que
estar borrándola constantementePara borrar la caché:● Eliminar el contenido de la carpeta app\cache
![Page 36: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/36.jpg)
Profiler● Herramienta activa sólo para el entorno de desarrollo.● Proporciona información de cada petición como:
o Parámetros del Requesto Sentencias SQL ejecutadaso Tiempos transcurridoso Datos de sesióno etc.
![Page 37: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/37.jpg)
![Page 38: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/38.jpg)
Mensajes de Error I● Symfony mostrará más información de los errores en el entorno
de desarrollo que en producción.Ejemplo para página no existente:● En desarrollo: Aparecerá un StackTrace completo● En producción: Error 404
![Page 39: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/39.jpg)
Mensajes de Error IIEntorno de desarrollo:
![Page 40: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/40.jpg)
Aplicando la filosofía de Symfony
Antes de empezar a programar la aplicación se deben adaptar a Sf:● Funcionalidades● Wireframes o Mockups
● El orden recomendado para la filosofía de Symfony es:1. Definir las entidades2. Definir los bundles3. Enrutamiento
![Page 41: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/41.jpg)
Entidades
● Ejemplo:
![Page 42: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/42.jpg)
¿Qué son los Bundles?● Carpetas que contienen los archivos necesarios para un grupo de
funcionalidades específicas● “Paquetes” con una estructura definida, que puede contener
cualquier cosa e implementa una funcionalidad.● Permiten utilizar bundles de terceros y compartir los bundles
propios entre distintos proyectos
![Page 43: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/43.jpg)
Bundles en Symfony I● Algunos de los bundles incluídos en la Standard Edition:
o Assetic: gestor de “assets” (CSS’s, JS, Imágenes, etc.) para PHP 5.3
o Doctrine: ORM (Object Relational Mapping)o Monolog: Sistema de logso SwiftMailer: Envío de mailso Twig: Lenguaje de plantillas
● Para ver los bundles existentes, ver en el fichero AppKernel.php dentro de la carpeta app\ del proyecto
![Page 44: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/44.jpg)
![Page 45: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/45.jpg)
Bundles en Symfony II● Una aplicación en Symfony2 podrá contener todos los bundles que se necesiten,
simplemente se deben crear y registrar. ● Todos los bundles deben ir dentro de la carpeta src\ del proyecto, mientras que los
Bundles de terceros deberán ir dentro de la carpeta vendor\.● Un Bundle tiene una estructura de carpetas y archivos definidos y un nombre
identificador dentro de nuestro proyecto que lo utilizaremos varias veces para hacer referencia al mismo.
● La versión estándar de Symfony2 viene ya con un Bundle de ejemplo llamado AcmeBundle y es el que se ejecuta al ingresar a http://localhost/Symfony/web/app_dev.php dando la bienvenida.
![Page 46: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/46.jpg)
Bundles en Symfony III● Nosotros crearemos nuestro propio Bundle pero para esto haremos una pequeña
modificación en el archivo app\config\routing_dev.yml en donde buscaremos las siguientes líneas:
_welcome: pattern: / defaults: { _controller: AcmeDemoBundle:Welcome:index }
y las reemplazaremos por
_welcome: pattern: /bienvenida defaults: { _controller: AcmeDemoBundle:Welcome:index }
![Page 47: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/47.jpg)
Bundles en Symfony IV● Con esto lo que se consigue es liberar la dirección:
http://localhost/Symfony/web/app_dev.php que corresponde a la bienvenida. ● Ahora para ingresar a esta página se debe escribir:
http://localhost/Symfony/web/app_dev.php/bienvenida en lugar de la anterior. ● Con ésto, se puede usar la dirección URL anterior para nuestro Bundle. Ahora
ingresando a la primera dirección debería dar un error 404 ya que no existe página asignada a esa ruta.
![Page 48: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/48.jpg)
El comando console● Para poder crear un bundle se utilizará una utilidad de Symfony llamada “console”● Alguna funcionalidad de “console”:1. Abrir consola y entrar al directorio del proyecto2. Situarse sobre la carpeta del proyecto y ejecutar el siguiente comando:
a. php app\console --version3. Al ejecutar esto se nos mostrará un texto similar a: Symfony version 2.5.0 –
app/dev/debug4. El archivo app\console no es nada más que un script PHP que ejecuta varias tareas
(tasks) dependiendo de los parámetros que le pasemos (como por ejemplo el parámetro “–-version”).
5. Existen muchas tareas que Symfony puede hacer por nosotros. Para verlas todas simplemente puedes hacerlo ejecutando el script sin pasarle parámetros:
C:\www\MDW >php app\console
![Page 49: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/49.jpg)
Crear un Bundle I1. Situarse sobre la ruta del proyecto y ejecutar el comando:
a. php app\console generate:bundle
2. Con este comando se ejecutará un generador que nos hará varias preguntas para
crear nuestro Bundle como se muestra a continuación:
![Page 50: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/50.jpg)
Crear un Bundle II1. Namespace o carpeta contenedora del Bundle
formada por: Carpeta del proyecto\nombreBundle2. Identificador del Bundle. El sistema propone
entre corchetes la concatenación proyectoNombreBundle. Para aceptar enter→
3. Ubicación del bundle. Aceptar4. Formato de archivo que usará para las
configuraciones del Bundle. Propone [annotations] pero le diremos que queremos que sea “yml”.
5. ¿Generar estructura completa para el bundle?a. Sí, si se necesitab. No, por defecto
![Page 51: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/51.jpg)
Crear un Bundle III6. Confirmamos si todo esta bien.
7. ¿Queremos registrar nuestro
Bundle en el archivo app\AppKernel.php? Sí→
8. ¿Queremos actualizar el archivo
app\config\routing.yml? Sí→
![Page 52: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/52.jpg)
Crear un Bundle IV● Dentro de la carpeta src\ se crearía una carpeta
correspondiente a el nombre del proyecto y dentro nuestro Bundle con sus carpetas y archivos necesarios.
● El identificador del bundle sería, por ejemplo: “MDWDemoBundle”.
● En el archivo AppKernel.php si lo abrieramos, veríamos una línea que apuntaría al archivo MDWDemoBundle.php. Lo que hace es habilitarlo para el proyecto.
![Page 53: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/53.jpg)
Crear un Bundle IV● Todo Bundle nuevo o de terceros que incluyamos al proyecto deben
ser registrados agregando la línea:
o $bundles = array( ... new MDW\ManualBundle\MDWDemoBundle(),);
● Por último también se agregarían las siguientes líneas al archivo app\config\routing.yml
o MDWDemoBundle:resource:
“@MDWDemoBundle/Resources/config/routing.yml"prefix: /
![Page 54: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/54.jpg)
Creando el Esquema IRecordando el modelo de Ejemplo:
![Page 55: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/55.jpg)
![Page 56: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/56.jpg)
![Page 57: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/57.jpg)
![Page 58: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/58.jpg)
![Page 59: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/59.jpg)
La Base de Datos
![Page 60: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/60.jpg)
El enrutador (Routing Component) I
● Enrutandoo URL’s feas: index.php?article_id=27o URL’s bonitas: /leer/intro-a-symfony
● Flexibilidado Para cambiar la URL de una página /blog a
/noticias. ¿Cuántos enlaces necesitas actualizar para hacer el cambio? Con el enrutador de Symfony el cambio es sencillo.
![Page 61: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/61.jpg)
El enrutador (Routing Component) II
● En acción:o Una ruta es un mapa desde un patrón URL hasta un
controlador.
![Page 62: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/62.jpg)
El enrutador (Routing Component) III
![Page 63: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/63.jpg)
El enrutador (Routing Component) IV
![Page 64: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/64.jpg)
La cara oculta del Routing
![Page 65: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/65.jpg)
Rutas ISymfony carga todas las rutas de la aplicación desde un archivo de configuración de enrutado: app/config/routing.yml
![Page 66: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/66.jpg)
Rutas IIMuchas rutas pueden contener uno o más parámetros. Éstos pueden ser opcionales o no:
No opcional Opcional
![Page 67: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/67.jpg)
Rutas IIILos requisitos de los parámetros son expresiones regulares, la complejidad y la flexibilidad de cada requisito depende de uno
![Page 68: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/68.jpg)
Patrón de nomenclatura para controladores
paquete:controlador:acciónPor ejemplo, un valor _controller de AcmeBlogBundle:Blog:show
![Page 69: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/69.jpg)
Comandos Útilescomposer update
php composer.phar require friendsofsymfony/user-bundle 1.3.4
php app/console cache:clear --env=dev
php app/console doctrine:schema:update --force
php app/console doctrine:generate:entities MWD/DemoBundle/Entity/EnityName --no-backup
php app/console doctrine:generate:entities MWD/DemoBundle/--no-backup
![Page 70: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/70.jpg)
¡Eso es todo! ¡Muchas Gracias ^^
¿Os ha gustado? ¡¡Pues ahora a seguir practicando!!
![Page 71: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/71.jpg)
Bibliografía I● http://www.slideshare.net/mario21ic/taller-introduccion-symfony2?related=1&utm_cam
paign=related&utm_medium=1&utm_source=1● http://www.slideshare.net/SymfonyZaragoza/crud-bsico-con-symfony-36780064?utm_cam
paign=ss_search&utm_medium=qf1&utm_source=27&qid=876ad1ac-5f7c-40c9-8910-88252825d243&v=qf1&b=&from_search=27
● http://www.slideshare.net/raulfraile/symfony2-framework-para-php5● http://www.maestrosdelweb.com/editorial/curso-symfony2-introduccion-instalacion● http://symfony.es/documentacion/● http://symfony.com/doc/current/book/doctrine.html● Routing:
http://www.slideshare.net/hydras_cs/clase-4-routing?qid=53f9a989-7cac-499e-af68-5010022ee87c&v=qf1&b=&from_search=5
![Page 72: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/72.jpg)
Bibliografía II● Twig:
o http://twig.sensiolabs.org/documentationo http://symfony.es/noticias/2012/06/07/desymfony2012-twig-los-mejores-tru
cos-y-tecnicas-avanzadas/o http://www.slideshare.net/2085020/twig-13706964?qid=d88c6912-4de6-471
6-8973-11aaeef6a041&v=qf1&b=&from_search=2● Taller para practicar:
o http://www.slideshare.net/mario21ic/taller-introduccion-symfony2?related=1&utm_campaign=related&utm_medium=1&utm_source=1
![Page 73: Symfony2 Formacion y primeros pasos](https://reader034.fdocumento.com/reader034/viewer/2022042815/5584b1f8d8b42a85768b46b6/html5/thumbnails/73.jpg)
Bibliografía III● APC:
o http://gregrickaby.com/the-perfect-apc-configuration/o http://dev.freshsite.pl/php-accelerators/apc.htmlo https://docs.moodle.org/22/en/Installing_APC_in_Windows