Instalación y primera prueba de Yii

Instalación del framework.

Después de instalados los paquetes de LAMP (Linux, Apache, MySQL y PHP) procedemos con la primera instalación de Yii.  En el equipo de desarrollo, el DocumentRoot se encuentra referenciando a /home/www/public, de esta manera en /home/www se almacenarán los recursos que están relacionados con las aplicaciones web pero que no deben ser publicados, es decir, serán privados.

Se descarga la última versión disponible del Yii Framework desde la siguiente ubicación.

http://www.yiiframework.com/download/

Para este caso fue el archivo yii-1.0.3.tar.gz el cual fue descargado en /home/www.

$ tar zxvf yii-1.0.3.r780.tar.gz

$ mkdir yii

$ mv yii-1.0.3.r780 yii/1.0.3

$ ln -s /home/www/yii/1.0.3/ /home/www/yii/current

La actualización del PATH como se muestra a continuación sólo modifica el ambiente del shell donde se ejecute; para realizar esta actualización de manera perdurable en el tiempo debe agregarse al final del archivo ~/.profile (para el usuario en sesión) o /etc/profile (para todos los usuarios del equipo).

$ PATH=/home/www/yii/current/framework:$PATH

Creación de la primera aplicación utilizando la herramienta yiic.

$ mkdir /home/www/public/demo1

$ yiic webapp /home/www/public/demo1

Acceder con un navegador web a la siguiente URL para verificar el esqueleto de aplicación generado.

http://localhost/demo1/

Deberá aparecer algo similar a lo mostrado en la siguiente imagen.

Aplicación base generada con 'yiic'
Aplicación base generada con ‘yiic’

La aplicación incluye tres secciones.

  1. Home: una página con texto estático (ver imagen).
  2. Contact: un formulario de contacto con validación de tipos y captcha.
  3. Login: un formulario de registro de usuario para el ingreso a la aplicación con su respectiva autenticación.

Creación y conexión a la base de datos y la tabla User.

$ mkdir -p /home/www/public/demo1/protected/data

$ cd /home/www/public/demo1/protected/data

$ vi script.sql

CREATE TABLE User (

id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
username VARCHAR(128) NOT NULL,
password VARCHAR(128) NOT NULL,
email VARCHAR(128) NOT NULL

);

$ sqlite3 source.db < script.sql

$ ls -l

-rw-r–r– 1 jimezam jimezam  168 2009-03-07 09:56 script.sql
-rw-r–r– 1 jimezam jimezam
3072 2009-03-07 09:57 source.db

$ vi /home/www/public/demo1/protected/config/main.php

return array(
‘basePath’=>dirname(__FILE__).DIRECTORY_SEPARATOR.’..’,
‘name’=>’Mi primera aplicación – Demo1’,
// …
‘db’=>array(
‘connectionString’=>’sqlite:protected/data/source.db’,
),
// …
);

Implementando las operaciones CRUD para User utilizando yiic.

$ cd /home/www/public/demo1

$ yiic shell

Yii Interactive Tool v1.0
Please type ‘help’ for help. Type ‘exit’ to quit.
>> model User
generate User.php

The ‘User’ class has been successfully created in the following file:
/home/www/public/demo1/protected/models/User.php

If you have a ‘db’ database connection, you can test it now with:
$model=User::model()->find();
print_r($model);

>> crud User
generate UserController.php
mkdir /home/www/public/demo1/protected/views/user
generate create.php
generate update.php
generate list.php
generate show.php
generate admin.php
generate _form.php

Crud ‘user’ has been successfully created. You may access it via:
http://hostname/path/to/index.php?r=user

>> exit

Inicie sesión a través del próximo URL y utilizando admin/admin como nombre de usuario y contraseña respectivamente.

http://localhost/demo1/index.php?r=site/login

Acceda al siguiente URL para utilizar el scaffolding de la tabla User recién creado.

http://localhost/demo1/index.php?r=user/admin

Después de agregar algunos datos deberá aparecer algo similar a lo mostrado en la siguiente imagen.

Scaffolding para la tabla User
Scaffolding para la tabla User

Problema con los assets.

Los assets son recursos del proyecto web que son publicados para ser utilizados directamente por los clientes. Para este proyecto se ubican en /home/www/public/demo1/assets y en esta ubicación se comparten las imágenes, las hojas de estilo y las librerías de Javascript.

Extrañamente encontré un problema.  Todas las opciones de la aplicación demo1 funcionaban correctamente exceptuando la eliminación (delete) de usuarios.  En el log de Apache aparecía el siguiente mensaje.

[Sat Mar 07 10:55:56 2009] [error] [client 127.0.0.1] (13)Permission denied: file permissions deny server access: /home/www/public/demo1/assets/d0586e3b/jquery.yii.js, referer: http://localhost/demo1/index.php?r=user/admin

Revisando la carga de los recursos de la página descubrí que tanto jquery.js como jquery-yii.js estaban fallando con un error 403.  Descubrí entonces que era un problema de permisos sobre estos archivos, muy probablemente motivado porque estoy utilizando suPHP (paquetes libapache2-mod-suphp y suphp-common en Ubuntu) que permite ejecutar los scripts bajo los permisos de sus propietarios.  Para resolver el problema fue necesario agregar el permiso de lectura para otros sobre los archivos relacionados con el siguiente comando.

$ chmod -R o+r /home/www/public/demo1/assets

Enlaces.

8 thoughts on “Instalación y primera prueba de Yii”

  1. Hola tengo una duda, mira lo que pasa es lo siguiente.

    Al momento de querer ejecutar en windows vista el yiic.bat me sale lo siguiente, no se si me puedas ayudar

    yiic [parameters…]
    The following commands are available:
    – message
    – shell
    – webapp

    To see individual command help, use the following:
    C:UsersAdministradorworkspaceinneventyiiframeworkyiic help

    1. Saludos @Luis. No utilizo Windows, sin embargo voy a intentar ayudarte. Se me ocurren dos posibles opciones.

      1. Lo estás invocando con los parametros apropiados ? Ese es el mensaje que imprime por defecto cuando se llama sin parámetros.
      2. Revisa que en el yiic.bat esté un “%*” al final de la línea donde se invoca a “yiic.php”.

      Cualquier cosa me cuentas.

  2. Saludos Luis Yo si Utilizo Windows y para muchos usuarios que buscan utilizar YII puedes por favor publicar tu forma de correr el comando SHELL que forma parte del tutorial de la primera aplicaciòn del YII.

    Mi Manera de hacerlo es la siguiente:

    yiic shell ../index.php

    Explicaciòn:

    El comando shell te permite interactuar con tu applicacion web, para generar automaticamente controladores, vistas y modelos de datos (MVC).

    YIIC espera que le pasemos el script de entrada a la aplicaciòn, o tambièn llamado wrapper, bueno se trata del index, y como en el tuto te dice que lo ejecutes en el yiic de la carpeta protected , el index.php esta antes ante lo cual retrocedemos con ../index.php.

    Muy buen tuto Jorge, felicitaciones.

    Saludos.

  3. hola este ejemplo esta muy bien pero como lo instalas en un hosting de paga compartido, si no quieres meterte al shell o no puedes meterte al shell, se me hace un punto en su contra. o me pueden dar algunas ventajas de manejarlo asi ?

    1. Saludos @hector. Normalmente se realiza la implementación de las plataformas en una instancia de desarrollo, el hosting sólo recibe los archivos que se consideran en producción. Si se desarrolla de esta manera puedes utilizar usar el Yiic en tu máquina totalmente controlada y publicar únicamente los archivos ya generados (por SFTP por ejemplo).

      Otra opción, es utilizar Gii: una versión web análoga al Yii. Para mas información revisa http://www.yiiframework.com/doc/guide/1.1/en/topics.gii

  4. hola tengo una duda, recien monte un CRM (Zurmo) en un equipo con Debian 8, ya termine de configurar de acuerdo a las instrucciones del proveedor de la aplicacion, esta desarrollada en Yii, RedPHP y jquery, cuando cargo de manera local la aplicacion me funciona sin problema, pero al querer ingresar por la IP del equipo desde otras maquinas en la red local me hace esto: http://localhost/zurmo/app/index.php/zurmo/default/login, y de hace un par de horas me indica que no esta disponible “objeto no localizado”, cual podria ser el problema ?

    De antemano gracias!

Leave a Reply

Your email address will not be published. Required fields are marked *