Manual de Symfony2 - index-of.co.ukindex-of.co.uk/Programming/symfony2-es.pdf Manual de Symfony2,...

download Manual de Symfony2 - index-of.co.ukindex-of.co.uk/Programming/symfony2-es.pdf Manual de Symfony2, Release

of 655

  • date post

    27-Aug-2020
  • Category

    Documents

  • view

    0
  • download

    0

Embed Size (px)

Transcript of Manual de Symfony2 - index-of.co.ukindex-of.co.uk/Programming/symfony2-es.pdf Manual de Symfony2,...

  • Manual de Symfony2 Release 2.0.1

    Traducido por Nacho Pacheco

    August 29, 2011

  • Índice general

    I Guía de inicio rápido 1

    1. Guía de inicio rápido 5 1.1. Un primer vistazo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2. La vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3. El controlador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.4. La arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    II Libro 29

    2. Libro 33 2.1. Symfony2 y fundamentos HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.2. Symfony2 frente a PHP simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.3. Instalando y configurando Symfony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.4. Creando páginas en Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 2.5. Controlador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 2.6. Enrutando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 2.7. Configuración básica de rutas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 2.8. Enrutando con marcadores de posición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 2.9. Marcadores de posición obligatorios y opcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 2.10. Agregando requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 2.11. Agregando requisitos de método HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 2.12. Ejemplo de enrutado avanzado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 2.13. Parámetros de enrutado especiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 2.14. Prefijando rutas importadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 2.15. Generando URL absolutas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 2.16. Generando URL con cadena de consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 2.17. Generando URL desde una plantilla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 2.18. Creando y usando plantillas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 2.19. Bases de datos y Doctrine (“El modelo”) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 2.20. Probando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 2.21. Validando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 2.22. Formularios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 2.23. Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

    I

  • 2.24. Caché HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 2.25. Traduciendo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 2.26. Contenedor de servicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 2.27. Rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 2.28. Funcionamiento interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 2.29. API estable de Symfony2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

    III Recetario 273

    3. Recetario 275 3.1. Cómo crear y guardar un proyecto Symfony2 en git . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 3.2. Cómo personalizar páginas de error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 3.3. Cómo definir controladores como servicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 3.4. Cómo forzar las rutas para utilizar siempre HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 3.5. Cómo permitir un carácter “/” en un parámetro de ruta . . . . . . . . . . . . . . . . . . . . . . . . . 280 3.6. Cómo utilizar Assetic para gestionar activos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 3.7. Cómo minimizar JavaScript y hojas de estilo con YUI Compressor . . . . . . . . . . . . . . . . . . 285 3.8. Cómo utilizar Assetic para optimizar imágenes con funciones Twig . . . . . . . . . . . . . . . . . 287 3.9. Cómo aplicar un filtro Assetic a una extensión de archivo especifica . . . . . . . . . . . . . . . . 291 3.10. Cómo manejar archivos subidos con Doctrine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 3.11. Extensiones Doctrine: Timestampable: Sluggable, Translatable, etc. . . . . . . . . . . . 300 3.12. Registrando escuchas y suscriptores de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 3.13. Cómo generar entidades de una base de datos existente . . . . . . . . . . . . . . . . . . . . . . . . . 302 3.14. Cómo utiliza Doctrine la capa DBAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 3.15. Cómo trabajar con varios gestores de entidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 3.16. Registrando funciones DQL personalizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 3.17. Cómo personalizar la reproducción de un formulario . . . . . . . . . . . . . . . . . . . . . . . . . . 309 3.18. Cómo crear un tipo de campo de formulario personalizado . . . . . . . . . . . . . . . . . . . . . . . 322 3.19. Cómo crear una restricción de validación personalizada . . . . . . . . . . . . . . . . . . . . . . . . 323 3.20. Cómo dominar y crear nuevos entornos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 3.21. Cómo configurar parámetros externos en el contenedor de servicios . . . . . . . . . . . . . . . . . . 329 3.22. Cómo utilizar el patrón fábrica para crear servicios . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 3.23. Cómo gestionar dependencias comunes con servicios padre . . . . . . . . . . . . . . . . . . . . . . 335 3.24. Cómo utilizar PdoSessionStorage para almacenar sesiones en la base de datos . . . . . . . . . . . . . 344 3.25. Estructura de un paquete y buenas prácticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 3.26. Cómo utilizar la herencia de paquetes para redefinir partes de un paquete . . . . . . . . . . . . . . . 350 3.27. Cómo exponer la configuración semántica de un paquete . . . . . . . . . . . . . . . . . . . . . . . . 350 3.28. Cómo enviar correo electrónico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 3.29. Cómo utilizar Gmail para enviar mensajes de correo electrónico . . . . . . . . . . . . . . . . . . . . 361 3.30. Cómo trabajar con correos electrónicos durante el desarrollo . . . . . . . . . . . . . . . . . . . . . . 361 3.31. Cómo organizar el envío de correo electrónico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 3.32. Cómo simular autenticación HTTP en una prueba funcional . . . . . . . . . . . . . . . . . . . . . . 365 3.33. Cómo probar la interacción de varios clientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 3.34. Cómo utilizar el generador de perfiles en una prueba funcional . . . . . . . . . . . . . . . . . . . . . 366 3.35. Cómo probar repositorios Doctrine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 3.36. Cómo agregar la funcionalidad “recuérdame” al inicio de sesión . . . . . . . . . . . . . . . . . . . . 370 3.37. Cómo implementar tu propio votante para agregar direcciones IP a la lista negra . . . . . . . . . . . 373 3.38. Listas de control de acceso (ACL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 3.39. Conceptos ACL avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 3.40. Cómo forzar HTTPS o HTTP a diferentes URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 3.41. Cómo personalizar el formulario de acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 3.42. Cómo proteger cualquier servicio o método de tu aplicación . . . . . . . . . . . . . . . . . . . . . . 389 3.43. Cómo cargar usuarios de la base de datos con seguridad (la entidad Proveedor) . . . . . . . . . . . . 393

    II

  • 3.44. Cómo crear un proveedor de usuario personalizado . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 3.45. Cómo crear un proveedor de autenticación personalizado . . . . . . . . . . . . . . . . . . . . . . . . 394 3.46. Cómo utilizar Varnish para acelerar mi sitio web . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 3.47. Cómo usar plantillas PHP en lugar de Twig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 3.48. Cómo cargar clases automáticamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 3.49. Cómo localizar archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 3.50. Cómo crear la consola/línea de ordenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 3.51. Cómo optimizar tu entorno de desarrollo para depuración . . . . . . . . . . . . . . . . . . .