jueves, 1 de enero de 2015

Gii, generación automática de código

Si hemos trabajamos anteriormente con Yii (la versión 1) recordaremos que hay una herramienta muy útil llamada Gii, la cual nos permitía generar rápidamente el código de nuestros modelos, vistas y controladores.

En ésta versión de Yii 2, también tenemos el asistente Gii. A continuación veremos cómo:

  • Habilitar Gii
  • Generar la clase Active Record 
  • Generar el código para implementar las operaciones CRUD
  • Personalizar el código generado por Gii


Configurar Gii

Gii es un módulo de Yii. Para habilitarlo debemos configurar la propiedad modules de la aplicación en el archivo \config\web.php

Si abrimos este archivo veremos que en un inicio tenemos un arreglo $config, y luego la configuración del módulo gii de manera similar a:

<?php

$params = require(__DIR__ . '/params.php');

$config = [...];

if (YII_ENV_DEV) {
    // configuration adjustments for 'dev' environment
    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = 'yii\debug\Module';

    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = 'yii\gii\Module';
}

return $config;


Las últimas líneas de código nos dicen que si nos encontramos en ambiente de desarrollo, se incluya el módulo debug y el módulo gii, el cual es una clase de yii\gii\Module

Si revisamos el script de entrada, \web\index.php tenemos la siguiente línea, la cual habilita el modo de desarrollo:

defined('YII_ENV') or define('YII_ENV''dev');

Para acceder a Gii en nuestro navegador web escribimos:

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

Veremos una página como la de la imagen siguiente:


En la entrada anterior, Trabajando con bases de datos, utilizamos la tabla pais. Utilizaremos la misma tabla para generar nuestro código con Yii.



Generando el modelo

Una vez que accedamos a Gii, presionamos el botón Start de la opción Model Generator. Con ello podemos generar nuestra clase Active Record. En Table Name escribimos el nombre de nuestra tabla; en este caso, pais. En Model Class aparecerá automáticamente Pais, aunque podemos escribir nosotros mismos con el nombre que deseemos.



Por lo general, las demás opciones las podemos dejar tal cual están. Si nuestras tablas tienen un prefijo (por ejemplo, tbl_ ) podemos marcar la opción Use Table Prefix, siempre y cuando definamos en nuestra conexión a base de datos el prefijo tablePrefix. También podemos marcar la opción Enable I18N si nuestra aplicación va a ser multi-idioma.

Al presionar el botón Preview podremos ver el archivo que se va a generar, y si ya existe, la opción para sobrescribir el archivo antiguo. En este versión tenemos un botón diff junto al nombre del archivo, el cual nos permite ver las diferencias en el código entre el archivo ya existente y el que se generará.

Al presionar el botón Generate se crearán los archivos que hemos marcado en la columna final.



Generando el código CRUD (o ABM)

El código CRUD se refiere al código de las operaciones Create (Crear), Read (Leer), Update (Actualizar) y Delete (Borrar). En español, también se lo conoce como ABM (Alta, Baja, Modificación).

Desde nuestra página de Gii, presionamos el botón Start de la opción CRUD Generator. Si ya generamos nuestro modelo, en el menú de la izquierda también tenemos la opción  CRUD Generator.

Siguiendo con nuestro ejemplo, los diferentes campos los llenamos de la siguiente manera:

  • Model Class: El nombre de nuestro modelo, pero hay que escribirlo con la ruta completa. Es decir: app\models\Pais
  • Search Model Class: Es el nombre de nuestro modelo de búsqueda. También debe escribirse el nombre completo con la ruta, es decir: app\models\PaisSearch
  • Controller Class: Es el nombre de nuestro controlador. También debe ser escrito el nombre completo con la ruta. Además, debe escribirse con la primera letra de cada palabra en Mayúscula y las demás en minúsculas, es decir: app\controllers\PaisController




Los demás campos los podemos dejar tal cual. La opción Widget Used in Index Page nos permite indicar el widget que se utilizará en la página index para desplegar los datos. En la versión 1 siempre era CListView, pero en ésta versión podemos escoger entre ListView o GridView. También podemos marcar Enable I18N si nuestra aplicación va a ser multi-idioma.

Al presionar el botón Preview, podremos ver el archivo que se va a generar, y si ya existe, la opción para sobrescribir el archivo antiguo. En este versión tenemos un botón diff junto al nombre del archivo, el cual nos permite ver las diferencias en el código entre el archivo ya existente y el que se generará.

Al presionar el botón Generate se crearán los archivos que hemos marcado en la columna final.



Probando

Para probar el resultado de nuestro trabajo utilizando Gii, en nuestro navegador web debemos escribir algo similar a:

http://hostname/index.php?r=pais/index

El resultado será similar a las imágenes siguientes:






Si queremos revisar el código generado por Gii, podemos revisar los archivos:
  • Controlador: controllers/PaisController.php
  • Modelo: models/Pais.php y models/PaisSearch.php
  • Vistas: views/pais/*.php
Al igual que en la versión 1, las vistas se generan en inglés. Esta versión también se puede personalizar. En las siguientes entradas veremos cómo personalizar Gii a nuestro gusto.


También te puede interesar:

No hay comentarios.:

Publicar un comentario

Nota: sólo los miembros de este blog pueden publicar comentarios.