Básico : Script de inicio
Posted enero 21, 2009
on:El script de inicio es el script bootstrap PHP que maneja las peticiones del usuario inicialmente. Éste es el unico script PHP que los usuarios finales puede pedir ejecutar.
En la mayoría de los casos, el script de inicio de una aplicación Yii contiene código simple como este:¨
// remove the following line when in production mode defined('YII_DEBUG') or define('YII_DEBUG',true); // include Yii bootstrap file require_once('path/to/yii/framework/yii.php'); // create application instance and run $configFile='path/to/config/file.php'; Yii::createWebApplication($configFile)->run();
El script primero incluye el archivo bootstrap del framework llamado yii.php . Luego crea una instancia de la aplicación web con la configuración especificada y ejecuta la aplicación.
Modo Debug
Una aplicación Yii puede correr en modo debug o en modo producción, esto es acorde al valor de la constante YII_DEBUG. Por defecto esta constante está definida en false, lo que significa modo producción.
Para correrlo en modo debug, defina la constante en true antes de incluir el archivo yii.php.
Correr la aplicación en modo debug es menos eficiente porque maneja una cantidad de registros internos. Por otro lado, el modo debug es de mucho mas ayuda durante el desarrollo porque provee mucha mas información acerca de los errores, cuando estos ocurren.
Traducción : Martín Sagastume Rué (msr)
Fuente: http://www.yiiframework.com/doc/guide/basics.entry
Yii implementa el patrón de diseño MVC(model-view-controller) el cuál es ideal para la programación Web.
MVC apunta a separar la lógica de negocio de la interfaz de usuario, así los programadores pueden facilmente cambiar cada parte sin afectar unas a otras. En MVC, el modelo representa la información(los datos) y las reglas de negocio; las vistas contienen los elementos de interfaz de usuario, como texto, colores, imagenes; y los controladores manejan la comunicación entre el modelo y la vista.
Además de MVC, Yii también introduce un controlador-frontal , llamado aplicación, el cual representa el contexto de ejecución de las peticiones en proceso. La aplicación resuelve las peticiones de los usuarios y las despacha al controlador apropiado para futuros manejos.
El siguiente diagrama muestra la estructura estática de una aplicación Yii:
El típico flujo de trabajo
El siguiente diagrama muestra el típico flujo de trabajo de una aplicación Yii cuando está manejando la petición de un usuario:
- Un usuario hace una petición en la siguiente URL http://www.example.com/index.php?r=post/show&id=1 y el servidor web maneja la petición ejecutando el bootstrap script index.php.
- El bootstrap script crea una instancia de la aplicación y la ejecuta.
- La aplicacion obtiene la información detallada de la petición de los usuarios desde un componente de la aplicación llamado request(petición).
- La aplicación determina la petición del controlador y actúa con la ayuda de un componente de la aplicación llamado urlManager(manejador de url’s).
Para este ejmplo, el controlador es Post que hace referencia a la clase PostController; y la acción es show(mostrar) el cuál su significado es determinado por el controlador - La aplicación crea una instancia de la petición del controlador para mas adelante manejar la petición del usuario. El controlador determina que la acción show(mostrar) se refiere a un método llamado actionShow en la clase del controlador.
Entonces crea y ejecuta filtros (por ej: controles de acceso) asociados a esta acción. La acción es ejecutada si los filtros lo permiten. - La acción lee un modelo Post el cuál si ID es 1 en la base de datos.
- La acción asocia una vista llamada show(mostrar) con el modelo Post.
- La vista lee y muestra los atributos del modelo Post.
- La vista ejecuta algunos artilugios.
- Los resultados de la vista son embebidos en un diseño(layout)
- La acción completa la prestación de la vista y muestra el resultado al usuario.
Traducción : Martín Sagastume Rué (msr)
Fuente: http://www.yiiframework.com/doc/guide/basics.mvc
Instalación:
$sudo apt-get update
$sudo apt-get install apache2 php5 libapache2-mod-auth-mysql php5-mysql php5-cli mysql-server-5.0 phpmyadmin
Configuración:
Para poder darle acceso de escritura al directorio de apache, debemos correr lo siguiente:
$sudo chmod -R 775 /var/www
Para acceder a phpmyadmin desde el servidor web:
$sudo ln -s /usr/share/phpmyadmin /var/www/
Para correr Apache y MySQL
$sudo /etc/init.d/apache2 start
$sudo /etc/init.d/mysql start
Para reiniciar Apache y MySQL
$sudo /etc/init.d/apache2 restart
$sudo /etc/init.d/mysql restart
Para detener Apache y MySQL
$sudo /etc/init.d/apache2 stop
$sudo /etc/init.d/mysql stop
Los archivos se colocan en /var/www/ y se acceden mediante
http://localhost/ruta/hacia/archivo.php
PhpMyAdmin se corre desde http://localhost/phpmyadmin/
Saludos ;-)
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
Introducción : Instalación de Yii
Posted enero 20, 2009
on:Instalación
La instalación de Yii es sencilla e involucra los dos siguientes pasos:
1) Descargar el framework desde www.yiiframework.com
2) Extraer el archivo en un directorio accesible por el servidor web.
Requerimientos
Luego de instalar Yii puede verificar si su servidor satisface los requerimientos de Yii. Puede hacer esto accediendo a un script que revisa los requerimientos y su sistema, acceda a la siguiente URL desde un navegador web:
http://nombrehost/ruta/hacia/yii/requirements/index.php
comunmente si esta trabajando localmente, el nombrehost es localhost.
Los requerimientos minimos de Yii son PHP 5.1.0 o superior. Yii ha sido probado en Apache HTTP server en Windows y en Linux. Pero también deberá correr en otros servidores webs o plataformas que soporten PHP 5.
Consejo: En producción se recomienda sacar el framework del servidor web para evitar hacks.
Traducción : Martín Sagastume Rué (msr)
Fuente: http://www.yiiframework.com/doc/guide/quickstart.installation
Introducción : ¿Qué es Yii ?
Posted enero 20, 2009
on:¿Que es Yii ?
Yii es un framework para PHP de alta performance basado en componentes web para desarrollar aplicaciones web de gran escala. Permite una máxima reusabilidad en la programación web y puede acelerar significativamente el proceso de desarrollo.
El nombre Yii (pronunciado /i:/ ) proviene de facilidad, eficiencia y extensión.
Requerimientos
Para correr una aplicación Web basada en Yii, usted necesita un servidor Web que soporte PHP 5.1.0 o superior.
Para los desarrolladores que quieran usar Yii, entender el paradigma de la orientación a objetos (POO) es de gran ayuda, ya que Yii es un framework puramente basado en POO.
¿Para que es mejor Yii?
Yii es un framework genérico para programar Webs que puede ser utilizado para desarrollar virtualmente cualquier tipo de aplicaciones web. Ya que es liviano y está equipado con las soluciones mas sofisticadas, está especialmente diseñado para trabajar con aplicaciones web de trafico alto, como portales, foros, CMS, comercios electrónicos, etc.
¿Cómo se compara Yii con otros Frameworks?
Como la mayoría de los framework para PHP , Yii es un framework que sigue el patrón de diseño MVC.
Yii sobresale sobre los otros frameworks PHP por su eficiencia y su rica librería de funcionalidades así como también su clara documentación.
Yii esta diseñado con cuidado desde el inicio para ser encajado en desarrollos de aplicaciones web serias.
Yii es el resultado de la experiencia que tienen sus autores en el desarrollo de aplicaciones web ricas en funcionalidad y la investigación y reflejo de los frameworks y aplicaciones mas populares para programar Webs.
Traducción : Martín Sagastume Rué (msr)
Fuente: http://www.yiiframework.com/doc/guide/quickstart.what-is-yii