Yii Framework en Español

Posts Tagged ‘aplicacion

Primera aplicación Yii

Para obtener una experiencia inicial con Yii, se describe en esta sección, cómo crear nuestra primera aplicación web usando Yii. Usaremos la poderosa herramienta yiic que puede ser usada para automatizar la creación de código con varios propósitos. Asumimos que YiiRaiz es el directorio donde Yii está instalado.

Corra yiic en la linea de comandos de la siguiente manera:

% YiiRaiz/framework/yiic webapp RaizWeb/testdrive

Note: Al correr yiic en Mac OS o en Linux/Unix , usted posiblemente deba cambiarle los permisos al archivo yiic para que pueda ser ejecutable.

También puede correr yiic usando php de la siguiente manera:

php YiiRaiz/framework/yiic.php webapp RaizWeb/testdrive

Esto creará el esqueleto de una aplicación Yii bajo el directorio RaizWeb/testdrive, donde RaizWeb es el documento raiz de su servidor web (en apache es ruta/hacia/htdocs). La aplicación es un buen punto de inicio para agregarle mas funcionalidades ya que tiene todos los directorios y archivos necesarios.

Sin escribir una sola linea de código, podemos probar nuestra primera aplicación Yii accediendo a la siguiente URL desde su navegador web:

http://nombrehost/testdrive/index.php

Como podemos ver, la aplicación tiene tres páginas: la pagina de inicio, la de contacto y la de login. La página de inicio muestra alguna información sobre la aplicación así como también el estado del usuario logueado, la página de contacto muestra un formulario que el usuario puede llenar para enviar sus inquietudes y la página de login le permite a un usuario autentificarse antes de acceder a los contenidos privados que requieren ciertos privilegios. Vea las siguientes capturas para mas detalles:

El siguiente diagrama muestra la estructura de directorios de nuestra aplicación. Porfavor lea las convenciones para mas detalles explicativos acerca de esta estructura :

testdrive/
   index.php                 punto de entrada de la aplicación Web
   assets/                   contiene archivos de recursos publicados
   css/                      contiene archivos CSS
   images/                   contiene archivos de imagen
   themes/                   contiene temas para la aplicación
   protected/                contiene archivos protegidos para usuarios finales
      yiic                   yiic scrpit de linea de comando
      yiic.bat               yiic script de linea de comando para MS Windows
      commands/              contiene comandos personalizados 'yiic'
         shell/              contiene comandos personalizados 'yiic shell'
      components/            contiene componentes reusables por el usuario
         MainMenu.php        el artilugio clase 'MainMenu'
         Identity.php        la clase 'Identity' usada para autentificación
         views/              contiene los archivos de vistas para los artilugios
            mainMenu.php     el archivo de vistas para el artilugio 'MainMenu'
      config/                contiene los archivos de configuración
         console.php         archivo de configuración para la aplicación de consola
         main.php            archivo de configuracion de la aplicación Web
      controllers/           contiene los archivos de las clases Controller
         SiteController.php  la clase Controller por defecto
      extensions/            contiene extensiones de terceros
      messages/              contiene mensajes traducidos
      models/                contiene archivos de las clases Model
         LoginForm.php       el formulario model para la acción de 'login'
         ContactForm.php     el formulario model para la acción de 'contact'
      runtime/               contiene archivos generados temporalmente
      views/                 contiene vistas del controller y archivos de diseño
         layouts/            contiene archivos de vistas de diseño
            main.php         el diseño por defecto para todas las páginas
         site/               contiene archivos de vistas para el controlador 'site'
            contact.php      las vistas para la acción de 'contact'
            index.php        las vistas para la acción de 'index'
            login.php        las vistas para la acción de 'login'
         system/             contiene archivos de las vistas del sistema

Conectando con la Base de Datos

Muchas aplicaciones web utilizan bases de datos. Nuestra aplicación testdrive no es una excepción. Para usar
una base de datos, primero necesitamos decirle a la aplicación, cómo conectarse a ella. Esto se hace cambiando el archivo de configuración de la aplicación:

WebRaiz/testdrive/protected/config/main.php

de la siguiente manera:

return array(
    ......
    'components'=>array(
        ......
        'db'=>array(
            'connectionString'=>'sqlite:protected/data/source.db',
        ),
    ),
    ......
);

En el código de arriba, agregamos un componente de entrada db, que le indica a la aplicación que se conecte con una base de datos SQLite: WebRaiz/testdrive/protected/data/source.db , cuando lo necesite.

Nota: Para usar las características de base de datos de Yii, necesitaremos habilitar la extensión PHP PDO y el driver específico para esa extensión. Para nuestra aplicación testdrive, necesitamos tener las extensiones php_pdo y php_pdo_sqlite habilitadas.

Opcional: si usted desea trabajar con MySQL puede cambiár la linea de connectionString del código de arriba por:

'connectionString'=>'mysql:host=localhost;dbname=Yii','username'=>'usuario', 'password'=>'clave', 'charset'=>'utf8',

 

en el caso de este ejemplo trabajaremos con SQLite 3, pero siempre es bueno tener varias alternativas y sobre todo la de MySQL que es la mas popular.

Para finalizar, necesitaremos preparar la base de datos SQLite asi la configuración establecida mas arriba puede ser efectiva. Usando alguna herramienta para administrar SQLite, podemos crear la base de datos con el siguiente schema:

CREATE TABLE User (
    id INT( 255 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR( 128 ) NOT NULL,
    password VARCHAR(128 ) NOT NULL,
    email VARCHAR( 128 ) NOT NULL
);

Para mantener las cosas simples, solamente creamos la tabla User en nuestra base de datos. El archivo de base de datos de SQLite está guardado en WebRaiz/testdrive/protected/data/source.db.

Note que el archivo y el directorio que lo contiene deben tener permisos de escritura en el servidor web, así lo requiere SQLite.

Implementar ABM con Yii

Ahora viene la parte mas divertida. Queremos implementar un ABM (alta, baja y modificación) para la tabla User que hemos creado. Esto es comunmente requerido en aplicaciones prácticas.

Note: ABM es lo que en inglés equivale a CRUD (create, read, update and delete)

Nuevamente, usamos la herramienta yiic para que nos ayude a generar el código que necesitamos.
Este proceso se le conoce también como scaffolding.

% cd WebRoot/testdrive
% YiiRoot/framework/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:
    D:\wwwroot\testdrive\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
   generate create.php
      mkdir D:/wwwroot/testdrive/protected/views/user
   generate update.php
   generate list.php
   generate show.php

El ABM para ‘user’ ha sido generado satisfactoriamente.

Ahi arriba, usamos el comando de consola yiic para interactuar con nuestra aplicacion creada recientemente.
En el prompt, podemos insertar expresiones válidas PHP para evaluarlas y mostrarlas por pantalla.
También podemos realizar tareas como model y crud(abm) como se muestra arriba. Y el comando crud genera la clase Controller y las vistas que implementa las operaciones ABM para el usuario normal.

Disfrutemos de nuestro *trabajo* ingresando la siguiente URL en el navegador web:
http://nombrehost/ruta/hacia/index.php?r=user

Esto mostrará una lista de entradas del usuario en la tabla User. Ya que nuestra tabla está vacía, nada se mostrará por ahora.
Haga click en el link New User de la página. Y nos traerá a la página de login si es que no nos hemos logueado anteriormente. Luego de loguearse, nos mostrará un formulario de ingreso para que podamos crear entradas de nuevos usuarios. Complete el formulario y haga click en el botón Create.

Si hay un error en la entrada de datos, un lindo cartel de error se mostrará diciendo que es lo que esta previniendo que los datos sean guardados.

Volviendo a la lista de usuarios, debemos ver los usuarios recientemente agregados que ahora se muestran en la lista. Repite los pasos una y otra ves hasta agregar varios usuarios. Note que la página con la lista de usuarios automáticamente creará una paginación si los usuarios son demasiados como para ser mostrados en una sola página.

Si nos logueamos como administrador usando la cuenta admin / admin , podemos ver la página del usuario admin en la siguiente URL

http://nombrehost/testdrive/index.php?r=user/admin

Esto mostrará una linda tabla con la entrada de los usuarios. Podemos hacer click en las celdas de la cabecera para ordenar las correspondientes columnas. Y como la página de los usuarios, la pagina del administrador también admite paginación si los usuarios son demasiados como para mostrarse en una sola página.

Todas estas características hermosas las podemos obtener sin escribir una sola linea de codigo !!!

Traducción : Martín Sagastume Rué (msr)
Fuente: http://www.yiiframework.com/doc/guide/quickstart.first-app

Anuncios