Home Programación PHP First Steps Yii-Framework

Por Jorge Villela, @Joge23_rm

Hola a todos, traigo a ustedes una mini-guía para la utilización de Yii-Framework. Sirve para empezar a utilizar este Framework de desarrollo ágil muy recomendable para todo tipo de proyectos web, espero les sirva, cualquier duda estoy disponible en @Joge23_rm o por correo joge23@gmail.com. Saludos.

NOMENCLATURA

Cambios a líneas

Agregados de líneas

INSTALACIÓN

Lo primero que debes hacer es descargar el  Framework del sitio: http://www.yiiframework.com/ (versión actual: v1.1.13)

Descomprimir y colocar carpeta sin renombrar (para mantener un control de la versión utilizada para cada proyecto) en la carpeta de elección, sugerida en ambiente linux: /opt/

Para la creación del proyecto utilizamos el Shell de Linux, estando en la carpeta donde se va a alojar el proyecto se escribe /opt/yii_version/framework/yiic webapp nombreProyecto

          p.e. jorge@jorge:/var/www$ /opt/yii-1.1.13.e9e4a0/framework/yiic webapp prueba

El sistema te solicitará confirmar la creación del proyecto, recordar que esto generará una carpeta con el nombre de dicho proyecto en donde estes ubicado. Puedes probar tu proyecto creado, en este ejemplo en el navegador:

http://localhost/prueba/

** En caso de mostrar el siguiente error

PHP warning

date() [<a href=’function.date’>function.date</a>]: It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘America/Chicago’ for ‘CDT/-5.0/DST’ instead

Verificar la configuración de PHP el default_time_zone (Este problema suele presentarse con Zend Studio)

Ya en este punto podrás ver tu sitio funcionando.

A partir de aquí se configurarán los archivos del proyecto, no debes modificar los del Framework a menos que sea muy necesario.

Podemos identificar que se han creado las carpetas de nuestro proyecto, debemos identificar la carpeta Protected que es donde estan los archivos de configuración, las extensiones, y el MVC (Models, Views, Controllers). En este punto están los de la estructura básica del proyecto.

CONFIGURACIÓN Y BASES DE DATOS

prueba/protected/config/main.php

<?php

// uncomment the following to define a path alias

// Yii::setPathOfAlias(‘local’,’path/to/local-folder’);

// This is the main Web application configuration. Any writable

// CWebApplication properties can be configured here.

return array(

          ‘basePath’=>dirname(__FILE__).DIRECTORY_SEPARATOR.’..’,

          ‘name’=>’Prueba’,

          ‘language’=>’es’,

          // preloading ‘log’ component

          ‘preload’=>array(‘log’),

          // autoloading model and component classes

          ‘import’=>array(

                   ‘application.models.*’,

                   ‘application.components.*’,

          ),

          ‘modules’=>array(

                   // uncomment the following to enable the Gii tool

                   ‘gii’=>array(

                             ‘class’=>’system.gii.GiiModule’,

                            ‘password’=>’hfdjkhf’,

                            // If removed, Gii defaults to localhost only.

                             ‘ipFilters’=>array(‘127.0.0.1′,'::1′),

                        ),

                       

                 ),

          // application components

          ‘components’=>array(

                   ‘user’=>array(

                             // enable cookie-based authentication

                             ‘allowAutoLogin’=>true,

                   ),

                               // JQUERY nativo desactivado

                               ‘clientScript’=>array(
‘scriptMap’=>array(
‘jquery.js’=>false,
‘jquery.min.js’=>false,
)
),

                   // uncomment the following to enable URLs in path-format

                    ‘urlManager’=>array(
‘urlFormat’=>’path’,
‘rules’=>array(
‘<controller:\w+>/<id:\d+>’=>'<controller>/view’,
‘<controller:\w+>/<action:\w+>/<id:\d+>’=>'<controller>/<action>’,
‘<controller:\w+>/<action:\w+>’=>'<controller>/<action>’,
),
),

                         ‘db’=>array(
‘connectionString’ => ‘sqlite:’.dirname(__FILE__).’/../data/testdrive.db’,
),

// uncomment the following to use a MySQL database

                         ‘db’=>array(
‘connectionString’ => ‘mysql:host=localhost;dbname=prueba’,
’emulatePrepare’=> true,
‘username’ => ‘usuario’,
‘password’ => ‘dsfsfsdfs’,
‘charset’ => ‘utf8′,
),

‘errorHandler’=>array(

                             // use ‘site/error’ action to display errors

‘errorAction’=>’site/error’,

),

‘log’=>array(

‘class’=>’CLogRouter’,

‘routes’=>array(

array(

‘class’=>’CFileLogRoute’,

‘levels’=>’error, warning’,

),

// uncomment the following to show log messages on web pages

/*

array(

‘class’=>’CWebLogRoute’,

),

*/

),

),
),

// application-level parameters that can be accessed

// using Yii::app()->params[‘paramName’]

‘params’=>array(

// this is used in contact page

‘adminEmail’=>’webmaster@example.com’,

),

);

Lo que hicimos fue modificar el nombre de nuestra aplicación, modificar el lenguaje para el sitio, descomentar el código que permite utilizar Gii (generación de modelos y crud) y le modificamos el campo de Password; agregar el código para deshabilitar el JQuery nativo (recomendado para incluir la versión más nueva y que no choquen), descomentar UrlManager (esto hace que los métodos se muestren con Friendly Url), descomentamos la configuración de DB y agregamos los datos de nuestra base de datos. Con esto finalizamos la modificación de este archivo.

CREACIÓN DE MODELOS

Es importante que el usuario www-data tenga permisos, se sugiere cambiar el propietario del proyecto cuando se utiliza el Gii(esto es porque se generan archivos a partir del navegador), en consola:

sudo chown -R www-data.www-data prueba

En el navegador: http://localhost/prueba/index.php/gii/default/login

Utilizamos nuestra contraseña (la que asignamos para el componente Gii en el archivo de configuración).

Una vez adentro, seleccionamos la sección de Model Generator y en esta parte ingresamos en el campo de Table Name el nombre de la tabla; lo demás es bueno dejarlo por Default. Seleccionamos el botón Preview y te mostrará la lista de archivos generados, en este caso sería un archivo Tablename.php, le das Generate y te regresará un mensaje de éxito.

Este es el proceso para crear los modelos de cada tabla, los cuales permitirán la conexión a la base y a dicha tabla.

p.e. Tablename::model()->findAll();//Con este comando recuperarías todos los registros de la tabla en concreto en forma de array de objetos.

CREACIÓN DE CRUD (CONSULTAS, ALTAS, BAJAS Y CAMBIOS)

A partir de nuestro archivo de modelo generado, podemos crear la consulta, altas, bajas y cambios a nuestra tabla con la opción de Crud Generator, donde sólo ingresaremos el nombre del modelo: Tablename

Al seleccionar Preview  nos mostrará todos los archivos (un Controller y varias vistas) que se van a generar, le damos Generate y listo, podemos empezar a utilizar/modificar según las necesidades del proyecto.

PUNTOS CLAVES

Modelo

Apartado de Rules: Reglas que van aplicarse tanto al Create como al Update de los registros de cada modelo.

Apartado de AttributeLabels: Permite definir las etiquetas de los campos, es muy útil si a lo largo de todo el proyecto se utilizan porque si hay un cambio sólo se modifica una vez.

Controller

Al principio se define el layout general, recomiendo moficar dicha línea y utilizar layout main,

public $layout=’//layouts/main';

El apartado de accessRules  permite definir las reglas de accesso, en la configuración por Default se da acceso a todo(*) a algunas acciones de las clases, a los usuarios logueados(@) a otras y a un usuario en específico a otras (Admin). Este puede ser customizado con opciones como ‘expression’, todo esto viene en la documentación de Yii.

Más adelante están todos los métodos de la clase, los que vienen por Default y los que se crearán para el proyecto.

Views

Gracias al Crud, por cada Controller se generán:

  • index.php (Página principal, por Default viene un listado de los elementos de la tabla).
  • _view.php (Se renderea parcialmente dentro de index.php, representa uno a uno los elementos que se muestran en la lista).
  • view.php (Es la vista individual de cada elemento de la tabla, si se utiliza el controller tablename/1) dirigirá por Default al View de ID 1
  • create/update (Contienen al _form que es donde se puede modificar al registro).

Entre otras…

Views site y Layout

En las vistas que vienen generadas desde el principio se encuentran las de Site (vistas básicas, el Index del Home, el contacto y otras. Todas estas son las vistas que serían relativamente estáticas) y las de Layout (main.php contiene el código que envuelve a todas las vistas que se renderean, es decir, el cascarón del sitio).

Espero que esta información les sea de utilidad, aquí les dejos algunos links en donde pueden encontrar más información.

http://www.yiiframework.com/

http://www.yiiframework.com/doc/guide/1.1/en/quickstart.first-app

http://www.yiiframework.com/wiki/

Leave a Reply