{' '} {' '}
Limited time offer
SAVE % on your upgrade.

Page 1

Índice de contenidos Sección 1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Capítulo 1 Lo que debes saber antes de comenzar. . . . . . . . . 17 1.1 Cómo leer este libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.2 Introducción a Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.3 Introducción a PHP 5.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.4 Introducción a YAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.5 Introducción a HTML5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.6 Introducción a Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Capítulo 2 El proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.1 Funcionamiento detallado de la aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2 Wireframes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.3 La base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.4 Aplicando la filosofía de Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.5 Entidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.6 Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.7 Enrutamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Capítulo 3 Instalando y configurando Symfony2 . . . . . . . . . 41 3.1 Descargando e instalando Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.2 Configurando el entorno de ejecución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.3 Actualizando Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.4 Creando los bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Sección 2 Frontend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Capítulo 4 Creando las primeras páginas. . . . . . . . . . . . . . . 59 4.1 La filosofía de Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.2 La primera página. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.3 Creando todas las páginas estáticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.4 Configurando la barra del final en las URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Capítulo 5 La base de datos . . . . . . . . . . . . . . . . . . . . . . . . 69 5.1 Entidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.2 Creando y configurando la base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87


5.3 El Entity Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 5.4 Archivos de datos o fixtures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5.5 Alternativas para generar el modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

Capítulo 6 Creando la portada . . . . . . . . . . . . . . . . . . . . . 107 6.1 Arquitectura MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 6.2 El enrutamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 6.3 El controlador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 6.4 La plantilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 6.5 Entornos de ejecución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 6.6 Depurando errores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 6.7 Refactorizando el Controlador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 6.8 Refactorizando el Modelo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 6.9 Refactorizando la Vista. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 6.10 Funcionamiento interno de Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 6.11 El objeto Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 6.12 El objeto Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

Capítulo 7 Completando el frontend . . . . . . . . . . . . . . . . . 153 7.1 Herencia de plantillas a tres niveles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 7.2 Hojas de estilo y archivos JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 7.3 Seleccionando la ciudad activa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 7.4 Creando la página de detalle de una oferta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 7.5 Completando las plantillas con extensiones de Twig . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 7.6 Creando la página de ofertas recientes de una ciudad. . . . . . . . . . . . . . . . . . . . . . . . . . . 178 7.7 Creando la portada de cada tienda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 7.8 Refactorización final. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

Capítulo 8 Registrando usuarios . . . . . . . . . . . . . . . . . . . . 193 8.1 Creando la página de compras recientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 8.2 Restringiendo el acceso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 8.3 Creando proveedores de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 8.4 Añadiendo el formulario de login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 8.5 Modificando las plantillas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 8.6 Creando los archivos de datos de usuarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 8.7 Formulario de registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 8.8 Visualizando el perfil del usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

Capítulo 9 RSS y los formatos alternativos . . . . . . . . . . . . 255


9.1 Formatos alternativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 9.2 Generando el RSS de las ofertas recientes de una ciudad . . . . . . . . . . . . . . . . . . . . . . . . 256 9.3 Generando el RSS de las ofertas recientes de una tienda . . . . . . . . . . . . . . . . . . . . . . . . 261 9.4 Registrando nuevos formatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

Capítulo 10 Internacionalizando el sitio web . . . . . . . . . . . 267 10.1 Configuración inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 10.2 Rutas internacionalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 10.3 Traduciendo contenidos estáticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 10.4 Traduciendo contenidos dinámicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 10.5 Traduciendo páginas estáticas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 10.6 Traduciendo fechas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

Capítulo 11 Tests unitarios y funcionales . . . . . . . . . . . . . 293 11.1 Primeros pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 11.2 Tests unitarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 11.3 Test funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 11.4 Configurando PHPUnit en Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323

Sección 3 Extranet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 Capítulo 12 Planificación. . . . . . . . . . . . . . . . . . . . . . . . . 329 12.1 Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 12.2 Enrutamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 12.3 Layout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

Capítulo 13 Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 13.1 Definiendo la nueva configuración de seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 13.2 Preparando el proveedor de usuarios de las tiendas . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 13.3 Creando el formulario de login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 13.4 Listas de control de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

Capítulo 14 Creando la parte de administración. . . . . . . . . 353 14.1 Creando la portada de la extranet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 14.2 Mostrando las ventas de una oferta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 14.3 Mostrando el perfil de la tienda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

Capítulo 15 Administrando las ofertas . . . . . . . . . . . . . . . 367 15.1 Creando ofertas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367


15.2 Modificando las ofertas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378

Sección 4 Backend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 Capítulo 16 Planificación. . . . . . . . . . . . . . . . . . . . . . . . . 389 16.1 Bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 16.2 Layout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 16.3 Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394

Capítulo 17 Admin generator . . . . . . . . . . . . . . . . . . . . . . 399 17.1 Admin generator manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 17.2 Generador de código de Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 17.3 SonataAdminBundle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

Capítulo 18 Newsletters y comandos de consola . . . . . . . . 429 18.1 Creando comandos de consola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 18.2 Generando la newsletter de cada usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 18.3 Enviando la newsletter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

Capítulo 19 Mejorando el rendimiento . . . . . . . . . . . . . . . 453 19.1 Desactivando los elementos que no utilizas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 19.2 Mejorando la carga de las clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454 19.3 Mejorando el rendimiento del enrutamiento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 19.4 Mejorando el rendimiento de la parte del cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 19.5 Mejorando el rendimiento de Doctrine2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 19.6 Mejorando el rendimiento de la aplicación con cachés . . . . . . . . . . . . . . . . . . . . . . . . . 481

Capítulo 20 Caché . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 20.1 La caché del estándar HTTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 20.2 Estrategias de caché . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 20.3 Cacheando con reverse proxies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 20.4 ESI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502

Sección 5 Apéndices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Apéndice A El motor de plantillas Twig . . . . . . . . . . . . . . 513 A.1 ¿Qué versión de Twig utilizo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513 A.2 Sintaxis básica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 A.3 Twig para maquetadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 A.4 Twig para programadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520


A.5 Usando Twig en proyectos PHP propios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 A.6 Usando Twig en Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561

Ap茅ndice B Inyecci贸n de dependencias . . . . . . . . . . . . . . . 569 B.1 Entendiendo la inyecci贸n de dependencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 B.2 La inyecci贸n de dependencias en Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577

Profile for Javier Eguiluz

Indice de contenidos del libro "Desarrollo web agil con Symfony2"  

Indice de contenidos del libro "Desarrollo web agil con Symfony2"

Indice de contenidos del libro "Desarrollo web agil con Symfony2"  

Indice de contenidos del libro "Desarrollo web agil con Symfony2"

Advertisement