start-gii.md 5.63 KB
Newer Older
1 2 3 4
Generando Código con Gii
========================

En esta sección, explicaremos cómo utilizar [Gii](tool-gii.md) para generar código que automáticamente
Antonio Ramirez committed
5
implementa algunas de las características más comunes de una aplicación. Para lograrlo, todo lo que tienes que hacer es
6 7 8 9 10 11 12 13 14 15 16 17 18
ingresar la información de acuerdo a las instrucciones mostradas en la páginas web de Gii.

A lo largo de este tutorial, aprenderás

* Cómo activar Gii en tu aplicación;
* Cómo utilizar Gii para generar una clase Active Record;
* Cómo utilizar Gii para generar el código que implementa las operaciones ABM de una tabla de la base de datos.
* Cómo personalizar el código generado por Gii.


Comenzando con Gii <a name="starting-gii"></a>
------------------

Antonio Ramirez committed
19 20
[Gii](tool-gii.md) está provisto por Yii en forma de [módulo](structure-modules.md). Puedes habilitar Gii
configurándolo en la propiedad [[yii\base\Application::modules|modules]] de la aplicación. Dependiendo de cómo hayas creado tu aplicación, podrás encontrar que el siguiente código ha sido ya incluido en el archivo de configuración `config/web.php`:
21 22 23 24 25 26 27 28 29 30

```php
$config = [ ... ];

if (YII_ENV_DEV) {
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = 'yii\gii\Module';
}
```

Antonio Ramirez committed
31 32
La configuración dice que al estar en el [entorno de desarrollo](concept-configurations.md#environment-constants),
la aplicación debe incluir el módulo llamado `gii`, cuya clase es [[yii\gii\Module]].
33 34

Si chequeas el [script de entrada](structure-entry-scripts.md) `web/index.php` de tu aplicación, encontrarás la línea
Antonio Ramirez committed
35
que esencialmente define la constante `YII_ENV_DEV` como verdadera -`true`.
36 37 38 39 40

```php
defined('YII_ENV') or define('YII_ENV', 'dev');
```

Antonio Ramirez committed
41
De esta manera, tu aplicación habrá habilitado Gii, y puedes acceder al módulo a través de la siguiente URL:
42 43 44 45 46 47 48 49 50 51 52

```
http://hostname/index.php?r=gii
```

![Gii](images/start-gii.png)


Generando una Clase Active Record <a name="generating-ar"></a>
---------------------------------

Antonio Ramirez committed
53
Para poder generar una clase Active Record con Gii, selecciona "Model Generator" (haciendo click en el vínculo que existe en la página inicial del modulo Gii). Después, completa el formulario de la siguiente manera,
54 55 56 57 58 59

* Table Name: `country`
* Model Class: `Country`

![Model Generator](images/start-gii-model.png)

Antonio Ramirez committed
60
Haz click el el botón "Preview". Verás que `models/Country.php` está mostrado listado como la clase resultante que ha de ser creada. Puedes hacer click en el nombre de la clase para previsualizar su contenido.
61

Antonio Ramirez committed
62
Al utilizar Gii, si habías creado previamente el mismo archivo y puede ser sobrescrito, si haces click
63
en el botón `diff` cercano al nombre del archivo, verás las diferencias entre el código a ser generado
Antonio Ramirez committed
64
y la versión existente del mismo.
65 66 67

![Previsualización del Model Generator](images/start-gii-model-preview.png)

Antonio Ramirez committed
68 69 70 71
Para sobrescribir un archivo existente, marca el checkbox que se encuentra al lado de "overwrite" y posteriormente haz click en el botón "Generate".

Después, verás una página de confirmación indicando que el código ha sido generado correctamente y tu archivo `models/Country.php`
ha sido sobrescrito con el nuevo código generado.
72 73 74 75 76


Generando código de ABM (CRUD en inglés) <a name="generating-crud"></a>
----------------------------------------

Antonio Ramirez committed
77 78 79
En computación, CRUD es el acrónimo de Crear, Obtener, Actualizar y Borrar (del inglés: Create, Read, Update y Delete) 
representando la cuatro funciones con datos más comunes en la mayoría de sitios Web. 
El acrónimo ABM es Altas, Bajas y Modificaciones. Para generar un ABM, selecciona "CRUD Generator" y completa el formulario de esta manera:
80 81 82 83 84 85 86 87 88

* Model Class: `app\models\Country`
* Search Model Class: `app\models\CountrySearch`
* Controller Class: `app\controllers\CountryController`

![Generador de ABM](images/start-gii-crud.png)

Al hacer click en el botón "Preview" verás la lista de archivos a ser generados.

Antonio Ramirez committed
89 90
Si has creado previamente los archivos `controllers/CountryController.php` y
`views/country/index.php` (en la sección sobre bases de datos de esta guía), asegúrate de seleccionar el checkbox "overwrite" para reemplazarlos. (Las versiones anteriores no disponían de un soporte ABM (CRUD) completo.)
91 92


Antonio Ramirez committed
93 94
Probándolo <a name="trying-it-out"></a>
----------
95 96 97 98 99 100 101 102 103 104

Para ver cómo funciona, accede desde tu navegador a la siguiente URL:

```
http://hostname/index.php?r=country/index
```

Verás una grilla de datos mostrando los países de la base de datos. Puedes ordenar la grilla
o filtrar los resultados escribiendo alguna condición en los encabezados de las columnas.

Antonio Ramirez committed
105
Por cada país mostrado en la grilla, puedes elegir entre visualizar el registro, actualizarlo o eliminarlo.
106 107 108 109 110 111 112
Puedes incluso hacer click en el botón "Create Country" que se encuentra sobre la grilla y así cargar
un nuevo país en la base de datos.

![Grilla de Países](images/start-gii-country-grid.png)

![Actualizando un País](images/start-gii-country-update.png)

Antonio Ramirez committed
113 114
La siguiente es la lista de archivos generados por Gii, en el caso de que quieras inspeccionar cómo el ABM ha sido generado,
o por si desearas personalizarlos:
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129

* Controlador: `controllers/CountryController.php`
* Modelos: `models/Country.php` y `models/CountrySearch.php`
* Vistas: `views/country/*.php`

> Información: Gii está diseñado para ser una herramienta altamente configurable. Utilizándola con sabiduría
  puede acelerar enormemente la velocidad de desarrollo de tu aplicación. Para más detalles, consulta la
  sección [Gii](tool-gii.md).


Resumen <a name="summary"></a>
-------

En esta sección, has aprendido a utilizar Gii para generar el código que implementa completamente las características
de un ABM de acuerdo a una determinada tabla de la base de datos.