Hace un tiempo trabajé con Cake PHP, y mientras lo utilizaba pensaba que estaba muy bien para medianas/grandes aplicaciones pero me preguntaba por qué no habría algún framework MVC más enfocado en el desarrollo de websites, que provea desde el inicio validación, login, un scaffolding agradable, búsqedas,etc.
Hoy me puse a investigar un poco acerca de YII Framework, y aparentemente es el framework que más se acerca a eso que estaba buscando.
Al igual que Cake y Symphony, YII está basado en Rails, lo cual es muy bueno. No voy a ponerme aquí a describir las virtudes de Rails, pero digamos que tiene una estructura de archivos similar, es MVC, y tiene una consola que nos facilita la creación de los ABMs para los modelos, entre otras cosas.
Instalación
Primero debemos descargar la última versión estable desde el
sitio oficial. En este momento la última versión estable es la 1.1.8.
Descomprimimos el zip en nuestro localhost. Esto nos creará la carpeta en donde quedará instalado YII. Para crear nuestra primera aplicación debemos abrir la línea de comandos de windows (INICIO-> EJECUTAR-> cmd) e ingresar al directorio en donde instalamos yii y luego a la carpeta “framework”.
1 | c:\ cd diretorio_de_yii\framework |
Una vez allí vamos a crear nuestra primera aplicación utilizando la consola de YII. En este caso llamaremos a la aplicación miWebsite, para generar todos los archivos necesarios para nuestra nueva aplicación, y suponiendo que nuestro localhost está en c:\wamp\www tipeamos:
1 | yiic webapp c:\wamp\www\miWebsite |
Automáticamente creará la estructura de nuestra nueva aplicación en el directorio que le indicamos. Si accedemos al sitio desde nuestro navegador ya podemos ver la pantalla de bienvenida, y aquí es en donde noté la diferencia con los otros frameworks. Desde el inicio nos crea una estructura básica de un sitio web, podemos ver un menú con home, una página estática de muestra, un formulario de contacto y un login… estos últimos con la validación correspondiente y un captcha en el formulario de contacto!
Configurando la base de datos
Para configurar la base de datos debemos editar el archivo main.php que se encuentra en miWebsite\protected\config
Por default viene configurado para sqlite, pero si queremos utilizar MySQL, debemos reemplazar el connectionString para que quede de la siguiente manera.
1 2 3 | 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=socialdating','username'=>'root', 'password'=>'', 'charset'=>'utf8', ) |
Creando las clases
Las clases pueden ser creadas automáticamente desde la consola, pero previamente debemos crear la tabla correspondiente en la base de datos. Supongamos que creamos la tabla “users”. Para generar la clase correspondiente debemos acceder nuevamente a la consola, pero esta vez lo haremos desde directorio de nuestra aplicación, accediendo a miWebsite\protected
Allí accederemos a la consola, indicándole la ruta al archivo de configuración main.php en donde está la conexión a la base de datos, ya que allí está la info que necesita para crear la clase con los campos indicados en la base de datos.
1 | yiic shell config/main.php |
Una vez que accedimos a la consola, para crear la clase tipeamos lo siguente:
1 | >> model user |
Se crearán tres archivos: models/Users.php, fixtures/User.php, unit/UserTest
Por ahora el único que nos interesa es Users.php, los otros dos archivos tienen que ver con que YII está pensado para soportar TDD, y los utilizaremos para hacer testing.
Si deseamos crear el ABM para esa clase automáticamente (scaffolding), el comando correspondiente es:
1 | >> crud User |
Nos generará varios archivos y nos indicará que podemos ver el ABM correspondiente a la clase User en la siguiente dirección: miWebsite/index.php?r=user
Como se ve en la captura, otra de las cosas que lo diferencian de otros frameworks que conozco, es que automáticamente se crearon las validaciones correspondientes.
Estas validaciones, además, pueden ser localizadas según el lenguaje deseado símplemente agregando al array de configuración de main.php el elemento ‘language’=>’es’.
Sobre la creación de las clases hay que decir que también ofrece un generador de código automático llamado GII, esta herramienta corre sobre el navegador y nos permite crear las clases de una manera más visual, pero me pareció mas rápido para este propósito hacerlo por consola, más adelante probaré la herramienta.
Bueno, eso es todo lo que he visto por ahora, pero lo poco que he visto me ha parecido genial. Voy a seguir investigando este framework ya que tiene muchas mas características que me resultan sumamente atractivas y realmente me gustaría aplicarlo en algún próximo proyecto.






