Gu£­a Definitiva de Yii 2.0' 1.2.3. Namespace El cambio m¢´as obvio en Yii 2.0 es el uso de namespaces

  • View
    12

  • Download
    0

Embed Size (px)

Text of Gu£­a Definitiva de Yii 2.0' 1.2.3. Namespace El cambio m¢´as obvio en Yii 2.0...

  • Gúıa Definitiva de Yii 2.0

    http://www.yiiframework.com/doc/guide

    Qiang Xue, Alexander Makarov, Carsten Brandt, Klimov Paul,

    and many contributors from the Yii community

    Español translation provided by: Antonio Ramirez, Daniel Gómez Pan,

    Enrique Mat́ıas Sánchez (Quique), ’larnu’,

    Luciano Baraglia

    This tutorial is released under the Terms of Yii Documentation.

    Copyright 2014 Yii Software LLC. All Rights Reserved.

    http://www.yiiframework.com/doc/guide http://www.yiiframework.com/doc/terms/

  • Índice general

    1. Introducción 1 1.1. ¿Qué es Yii? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Actualizar desde Yii 1.1 . . . . . . . . . . . . . . . . . . . . . 3

    2. Primeros pasos 15 2.1. Qué necesita saber . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2. Instalar Yii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3. Corriendo Aplicaciones . . . . . . . . . . . . . . . . . . . . . . 22 2.4. Diciendo Hola . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.5. Trabajando con Formularios . . . . . . . . . . . . . . . . . . . 29 2.6. Trabajar con Bases de Datos . . . . . . . . . . . . . . . . . . 34 2.7. Generando Código con Gii . . . . . . . . . . . . . . . . . . . . 40 2.8. Mirando Hacia Adelante . . . . . . . . . . . . . . . . . . . . . 46

    3. Estructura de una aplicación 49 3.1. Información general . . . . . . . . . . . . . . . . . . . . . . . . 49 3.2. Scripts de Entrada . . . . . . . . . . . . . . . . . . . . . . . . 50 3.3. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.4. Componentes de la Aplicación . . . . . . . . . . . . . . . . . . 64 3.5. Controladores . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.6. Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 3.7. Vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 3.8. Filtros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 3.9. Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 3.10. Módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 3.11. Assets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 3.12. Extensiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

    4. Gestión de las peticiones 147 4.1. Información General . . . . . . . . . . . . . . . . . . . . . . . 147 4.2. Bootstrapping . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 4.3. Enrutamiento y Creación de URLS . . . . . . . . . . . . . . . 149 4.4. Peticiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

    iii

  • iv ÍNDICE GENERAL

    4.5. Respuestas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 4.6. Sesiones (Sessions) y Cookies . . . . . . . . . . . . . . . . . . 172 4.7. Gestión de Errores . . . . . . . . . . . . . . . . . . . . . . . . 179 4.8. Registro de anotaciones . . . . . . . . . . . . . . . . . . . . . 183

    5. Conceptos clave 193 5.1. Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 5.2. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 5.3. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 5.4. Comportamientos . . . . . . . . . . . . . . . . . . . . . . . . . 203 5.5. Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 5.6. Alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 5.7. Autocarga de clases . . . . . . . . . . . . . . . . . . . . . . . . 217 5.8. Localizador de Servicios . . . . . . . . . . . . . . . . . . . . . 219 5.9. Contenedor de Inyección de Dependencias . . . . . . . . . . . 221

    6. Trabajar con bases de datos 229 6.1. Objetos de Acceso a Bases de Datos . . . . . . . . . . . . . . 229 6.2. Constructor de Consultas . . . . . . . . . . . . . . . . . . . . 242 6.3. Migración de Base de Datos . . . . . . . . . . . . . . . . . . . 252

    7. Obtener datos de los usuarios 275 7.1. Validación de Entrada . . . . . . . . . . . . . . . . . . . . . . 277 7.2. Subir Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . 291 7.3. Obtención de datos para los modelos de múltiples . . . . . . . 297

    8. Visualizar datos 299 8.1. Paginación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 8.2. Proveedores de datos . . . . . . . . . . . . . . . . . . . . . . . 304 8.3. Widgets de datos . . . . . . . . . . . . . . . . . . . . . . . . . 311 8.4. Trabajar con Scripts del Cliente . . . . . . . . . . . . . . . . . 316 8.5. Temas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

    9. Seguridad 321 9.1. Autorización . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 9.2. Trabajar con Passwords . . . . . . . . . . . . . . . . . . . . . 338

    10.Caché 343 10.1. El Almacenamiento en Caché . . . . . . . . . . . . . . . . . . 343 10.2. Almacenamiento de Datos en Caché . . . . . . . . . . . . . . 343 10.3. Caché de Fragmentos . . . . . . . . . . . . . . . . . . . . . . . 352 10.4. Caché de Páginas . . . . . . . . . . . . . . . . . . . . . . . . . 356 10.5. Caché HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

  • ÍNDICE GENERAL v

    11.Servicios Web RESTful 361 11.1. Gúıa Breve . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 11.2. Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 11.3. Controladores . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 11.4. Enrutamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 11.5. Formato de Respuesta . . . . . . . . . . . . . . . . . . . . . . 375 11.6. Autenticación . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 11.7. Limitando el rango (rate) . . . . . . . . . . . . . . . . . . . . 381 11.8. Versionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 11.9. Manejo de errores . . . . . . . . . . . . . . . . . . . . . . . . . 385

    12.Herramientas de Desarrollo 389

    13.Pruebas 393 13.1. Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 13.2. Preparación del entorno de pruebas . . . . . . . . . . . . . . . 395 13.3. Pruebas unitarias . . . . . . . . . . . . . . . . . . . . . . . . . 395 13.4. Tests funcionales . . . . . . . . . . . . . . . . . . . . . . . . . 396 13.5. Tests de aceptación . . . . . . . . . . . . . . . . . . . . . . . . 397 13.6. Fixtures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 13.7. Administrar Fixtures . . . . . . . . . . . . . . . . . . . . . . . 403

    14.Temas especiales 407 14.1. Crear tu propia estructura de Aplicación . . . . . . . . . . . . 409 14.2. Validadores del framework . . . . . . . . . . . . . . . . . . . . 412 14.3. Env́ıo de Emails . . . . . . . . . . . . . . . . . . . . . . . . . 425 14.4. Usar motores de plantillas . . . . . . . . . . . . . . . . . . . . 432 14.5. Trabajar con código de terceros . . . . . . . . . . . . . . . . . 433

    15.Widgets 437

    16.Clases auxiliares 439 16.1. Helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 16.2. ArrayHelper . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 16.3. Clase auxiliar Html (Html helper) . . . . . . . . . . . . . . . 448 16.4. Clase Auxiliar URL (URL Helper) . . . . . . . . . . . . . . . 455

  • vi ÍNDICE GENERAL

  • Caṕıtulo 1

    Introducción

    1.1. ¿Qué es Yii?

    Yii es un framework de PHP de alto rendimiento, basado en componentes para desarrollar aplicaciones web modernas en poco tiempo. El nombre Yii significa “simple y evolutivo” en chino. También se puede considerar como el acrónimo de Yes It Is (que en inglés significa Śı, lo es)!

    1.1.1. ¿En qué es mejor Yii?

    Yii es un framework genérico de programación web, lo que significa que se puede utilizar para desarrollar todo tipo de aplicaciones web en PHP. Debido a su arquitectura basada en componentes y a su sofisticada compatibilidad de caché, es especialmente apropiado para el desarrollo de aplicaciones de gran envergadura, como páginas web, foros, sistemas de gestión de contenidos (CMS), proyectos de comercio electrónico, servicios web compatibles con la arquitectura REST y muchos más.

    1.1.2. ¿Cómo se compara Yii con otros frameworks?

    Si estás ya familiarizado con otros framework, puedes apreciar como se compara Yii con ellos:

    Como la mayoŕıa de los framework de PHP, Yii implementa el patrón de diseño MVC (Modelo-Vista-Controlador) y promueve la organización de código basada en este patrón. La filosof́ıa de Yii consiste en escribir el código de manera simple y elegante, sin sobrediseñar nunca por el mero hecho de seguir un patrón de diseño determinado. Yii es un framework completo (full stack) que provee muchas carac- teŕısticas probadas y listas para usar, como los constructores de con- sultas y la clase ActiveRecord para las bases de datos relacionales y

    1

  • 2 CAPÍTULO 1. INTRODUCCIÓN

    NoSQL, la compatibilidad con la arquitectura REST para desarrollar API, la compatibilidad de caché en varios niveles y muchas más. Yii es extremadamente extensible. Puedes personalizar o reemplazar prácticamente cualquier pieza de código de base, como se puede tam- bién aprovechar su sólida arquitectura de extensiones para utilizar o desarrollar extensiones distribuibles. El alto rendimiento es siempre la meta principal de Yii.

    Yii no es un proyecto de un sola persona, detrás de Yii hay un sólido equipo de desarrollo1, aśı como una gran comunidad en la que numerosos profesionales contribuyen constanteme