GUIA BASICA DE
YII FRAMEWORK
Por: Gabriel Duarte
[email protected]
Guía Básica de Yii Framework
ÍNDICE
GUIA BASICA DE YII FRAMEWORK............................................................................................................1
INSTALANDO YII Y PRIMERA APLICACIÓN..............................................................................................3
CREANDO MODELOS Y CRUD A PARTIR DE UNA BASE DE DATOS.....................................................4
LENGUAJE Y VISTA POR DEFECTO.............................................................................................................6
MODIFICANDO EL MENÚ..............................................................................................................................7
AUTENTICACIÓN DE USUARIOS.................................................................................................................9
CLAVES FORÁNEAS EN VISTAS.................................................................................................................12
VALIDANDO LOS FORMULARIOS.............................................................................................................15
ORDEN POR DEFECTO Y CONDICION EXTRA EN GRID.......................................................................17
FECHAS CON CJUIDATEPICKER................................................................................................................18
BÚSQUEDAS POR FECHAS CON SYDATECOLUMN...............................................................................20
EXPORTAR DEL CGRIDVIEW A PDF..........................................................................................................22
REPORTES A PARTIR DE UNA BÚSQUEDA...............................................................................................25
COMBOS DEPENDIENTES............................................................................................................................28
CAMPO CON AUTOCOMPLETAR................................................................................................................31
NO MOSTRAR INDEX.PHP EN LAS URL....................................................................................................33
GUARDAR AUTOMÁTICAMENTE USUARIO Y FECHA DE CREACIÓN Y MODIFICACIÓN............34
HACER FORMULARIO PARA MULTIPLES MODELOS............................................................................35
CAMPOS ENMASCARADOS EN FORMULARIO.......................................................................................38
2
INSTALANDO YII Y PRIMERA APLICACIÓN
Guía Básica de Yii Framework
Lo primero que hacemos es bajarnos la ultima versión de Yii Framework desde
http://www.yiiframework.com la descomprimimos en nuestro directorio web, le cambiamos el nombre a “yii”
y le damos permisos de lectura.
Abrimos la consola, nos ubicamos en la www y colocamos: yii/framework/yiic webapp
nombre_aplicacion, nos va a preguntar si queremos crear una aplicación web en ese directorio y le decimos
que si.
Con esto hemos creado nuestra primera aplicación en Yii. En el próximo capitulo se explicará como
conectar nuestra aplicación con una base de datos y como crear el modelo y el CRUD de las tablas.
3
CREANDO MODELOS Y CRUD A PARTIR DE
UNA BASE DE DATOS
Una vez creada la aplicación abrimos el archivo /protected/config/admin.php y modificamos lo
Guía Básica de Yii Framework
siguiente:
'modules'=>array(
/*
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'Enter Your Password Here',
'ipFilters'=>array('127.0.0.1','::1'),
),
*/
),
Descomentamos el arreglo gii y colocamos el password que queramos, el modulo GII es el que nos
ayuda a crear el modelo y el CRUD de las tablas de nuestra base de datos, a continuación vamos a configurar
la conexión, para ello debemos comentar el siguiente arreglo:
'db'=>array(
'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
),
Y creamos nuestro nuevo arreglo de conexión así:
'db'=>array(
'connectionString' => 'pgsql:host=localhost;dbname=nombre_base_datos',
'emulatePrepare' => true,
'username' => 'usuario',
'password' => 'clave.usuario',
'charset' => 'utf8',
),
4
Guía Básica de Yii Framework
Para dirigirnos al modelo GII copiamos en nuestra barra de direcciones algo como
http://localhost/nombre_aplicacion/index.php?r=gii, nos pide el password que configuramos anteriormente,
una vez dentro le damos a “Model Generator” y colocamos el nombre de la tabla, le damos Preview y luego
Generate, a continuación creamos el CRUD en “Crud Generator” colocando el nombre del modelo que
acabamos de crear. Si logramos conectarnos satisfactoriamente a la base de datos nos mostrará algo como la
siguiente imagen.
Con esto hemos creado todas las vistas, el controlador y el modelo para esa tabla en particular, las
vistas son: create, update, index, admin y view.
Para agregar el modelo nuevo al menú nos vamos al archivo /protected/views/layouts/main.php y
modificamos el arreglo de items del menú agregándole uno nuevo de la siguiente forma:
array('label'=>'Estado', 'url'=>array('/estado/admin')),
Ya podemos probar que podemos crear, modificar y eliminar registros de nuestro modelo.
5
LENGUAJE Y VISTA POR DEFECTO
Guía Básica de Yii Framework
En /protected/config/admin.php al final colocar dentro del arreglo principal:
'language'=>'es', // Este es el lenguaje en el que quieres que muestre las cosas
'sourceLanguage'=>'en', // Este es el lenguaje por defecto de los archivos
'defaultController'=>'controlador/admin', // Vista por defecto
Esto no nos traduce las vistas completamente, muchas cosas hay que cambiarlas a mano.
Si queremos colocar un favicon en el head de protected/views/layouts/main.php colocamos:
<link rel="shortcut icon" href="<?php echo Yii::app()->request->baseUrl; ?
>/images/icon.png" type="image/x-icon" />
6
MODIFICANDO EL MENÚ
Guía Básica de Yii Framework
A continuación vamos a modificar el menú, de tal forma que nos quede mas espacio para las vistas y
las acciones de las vistas (crear, modificar, eliminar) se coloquen por debajo del menú principal. Para eso
modificamos el /protected/views/layouts/column2.php:
- Cambiamos el nombre del id del div “sidebar” por “mainmenu”.
- Colocamos el nuevo div “mainmenu” (completo) dentro del div con class=“span-19”.
- Cambiamos class=“span-19” por class”span-25”.
- Comentamos las siguientes lineas de código:
$this->beginWidget('zii.widgets.CPortlet', array('title'=>'Operations',));
'htmlOptions'=>array('class'=>'operations'),
$this->endWidget();
En el /protected/views/layouts/main.php:
- Comentamos las lineas:
<?php if(isset($this->breadcrumbs)):?>
<?php $this->widget('zii.widgets.CBreadcrumbs', array('links'=>$this-
>breadcrumbs,)); ?>
<?php endif?>
Al aplicar estos cambios el menú quedaría mas o menos así:
Si queremos un menú mas potente podemos usar la extensión mbmenu, bajamos la extensión de la
pagina oficial de Yii y copiamos la carpeta /protected/extensions
En /protected/views/layouts/main.php cambiar el widget del CMenu por algo como:
<?php $this->widget('application.extensions.mbmenu.MbMenu',array(
'items'=>array(
array('label'=>'Home', 'url'=>array('/site/index')),
array('label'=>'Principal', 'url'=>array('/site/contact'),
7
Guía Básica de Yii Framework
'items'=>array(
array('label'=>'Usuarios', 'url'=>array('/usuario')),
array('label'=>'Contratos', 'url'=>array('/contrato')),
),
),
array('label'=>'Prueba',
'items'=>array(
array('label'=>'Sub 1',
'url'=>array('/site/page','view'=>'sub1')),
array('label'=>'Sub 2',
'items'=>array(
array('label'=>'Sub sub 1',
'url'=>array('/site/page','view'=>'subsub1')),
array('label'=>'Sub sub 2',
'url'=>array('/site/page','view'=>'subsub2')),
),
),
),
),
),
)); ?>
Al colocar el nuevo menú seguramente se ve extraño, para evitar esto debemos quitar el
id=“mainmenu”.
Con estos cambios queda mas espacio para las vistas y el pequeño menú de la derecha queda por
debajo del menú principal.
8
AUTENTICACIÓN DE USUARIOS
Este es el sql de la tabla donde se guardaran nuestros usuarios:
Guía Básica de Yii Framework
CREATE TABLE usuario (
id serial NOT NULL,
username character varying(128) NOT NULL,
password character varying(128) NOT NULL,
CONSTRAINT usuario_pkey PRIMARY KEY (id) )
WITH (OIDS=FALSE);
ALTER TABLE usuario OWNER TO postgres;
Debes crear el modelo y el CRUD de esta tabla con el Gii
En protected/components/UserIdentity.php sustituimos la clase UserIdentity por:
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$username=strtolower($this->username);
$user=Usuario::model()->find('LOWER(username)=?',array($username));
if($user===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if(!$user->validatePassword($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$user->id;
$this->username=$user->username;
$this->errorCode=self::ERROR_NONE;
}
return $this->errorCod
Comentarios de: Guía básica de YII framework (0)
No hay comentarios