Está en la página 1de 464

Gu´ıa Definitiva de Yii 2.0

Qiang Xue, Alexander Makarov, Carsten Brandt, Klimov Paul, and many contributors from the Yii community

Espa˜nol translation provided by:

Antonio Ramirez, Daniel G´omez Pan, Enrique Mat´ıas S´anchez (Quique), ’larnu’, Luciano Baraglia

This tutorial is released under the Terms of Yii Documentation.

Copyright 2014 Yii Software LLC. All Rights Reserved.

´

Indice general

1. Introducci´on

 

1

1.1. ¿Qu´e es Yii? .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

1

1.2. Actualizar desde Yii 1.1

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

3

2. Primeros pasos

 

15

2.1. Qu´e 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´odigo con Gii

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

40

2.8. Mirando Hacia Adelante

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

46

3. Estructura de una aplicaci´on

 

49

3.1. Informaci´on general .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

49

3.2. Scripts de Entrada

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

50

3.3. Aplicaciones .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

52

3.4. Componentes de la Aplicaci´on

 

64

3.5. Controladores

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

66

3.6. Modelos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

76

3.7. Vistas

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

86

3.8. Filtros

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

101

3.9. Widgets

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

110

3.10. M´odulos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

114

3.11. Assets

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

119

3.12. Extensiones

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

134

4. Gesti´on de las peticiones

 

147

4.1. Informaci´on General

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

147

4.2. Bootstrapping

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

148

4.3. Enrutamiento y Creaci´on de URLS

 

149

4.4. Peticiones

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

163

 

iii

 

´

iv

INDICE GENERAL

 

4.5. Respuestas

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

166

4.6. Sesiones (Sessions) y Cookies

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

172

4.7. Gesti´on 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´on

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

209

5.6. Alias .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

215

5.7. Autocarga de clases

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

217

5.8. Localizador de Servicios

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

219

5.9. Contenedor de Inyecci´on 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

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

241

6.3. Migraci´on de Base de Datos

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

252

7.

Obtener datos de los usuarios

 

275

7.1. Validaci´on de Entrada

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

277

7.2. Subir Archivos

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

291

7.3. Obtenci´on de datos para los modelos de m´ultiples

 

297

8.

Visualizar datos

 

299

8.1. Paginaci´on .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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´on

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

323

9.2. Trabajar con Passwords

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

338

10.Cach´e

 

343

 

10.1. El Almacenamiento en Cach´e

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

343

10.2. Almacenamiento de Datos en Cach´e

.

.

.

.

.

.

.

.

.

.

.

.

.

.

343

10.3. Cach´e de Fragmentos

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

352

10.4. Cach´e de P´aginas

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

356

10.5. Cach´e HTTP

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

357

´

INDICE GENERAL

v

11.Servicios Web RESTful

 

361

11.1. Gu´ıa Breve

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

361

Recursos .

11.2. .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

365

11.3. Controladores

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

370

11.4. Enrutamiento

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

373

11.5. Formato de Respuesta

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

375

11.6. Autenticaci´on

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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´on del entorno de pruebas

 

395

13.3. Pruebas unitarias

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

395

13.4. Tests funcionales

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

396

13.5. Tests de aceptaci´on .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

397

13.6. Fixtures

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

397

13.7. Administrar Fixtures

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

403

14.Temas especiales

 

407

14.1. Crear tu propia estructura de Aplicaci´on

 

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´odigo 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)

.

.

.

.

.