@plattinux
Entendiendo Yii Framework
Lenin Hernandez
[email protected]
leninmhs.wordpress.com
www.plattinux.com.ve / @plattinux
Página 1 / 29
Un Framework es un conjunto de código, librerías y
componentes probados y optimizados para facilitar y
agilizar el desarrollo de aplicaciones, basado en mejores
prácticas de desarrollo, que nos permitirán trabajar de
forma uniforme, organizada y con la mayor calidad posible.
Normalmente cuentan con documentación, una comunidad
que lucha por su desarrollo y mantenimiento.
- Yii (PHP) - yiiframework.com
- Symfony (PHP)- symfony-project.org
- CakePHP (PHP) - cakephp.org
- CodeIgniter (PHP) – codeigniter.com
- Laravel (PHP) – laravel.com
- Ruby on Rails (Ruby) – rubyonrails.org
- Catalyst (Perl) – catalystframework.org
- Django (Python) - djangoproject.com
www.plattinux.com.ve / @plattinux
Página 2 / 29
”Yii es un framework de alto rendimiento escrito en PHP
para el desarrollo rápido de aplicaciones web”
Sobre Yii
Yii es un framework genérico de programación Web que puede ser
utilizado para todo tipo de aplicaciones Web. Gracias a que es liviano
de correr y está equipado con soluciones de cacheo sofisticadas, es
adecuado para desarrollar aplicaciones de gran
tráfico como
portales, foros, sistemas de administración de contenidos (CMS),
Sistemas
etc.
www.yiiframework.com
(e-commerce),
electrónico
de
comercio
- Simple, Sencillo, Humilde.
- Curva de Aprendizaje no es empinada.
- Esta hecho para funcionar por defecto.
- Rápido (Puesta en Marcha y aplicación).
- Facilita el Desarrollo de Software en equipos
Yes, it is
www.plattinux.com.ve / @plattinux
Página 3 / 29
Características Yii
- Patrón MVC, Modelo - Vista - Controlador
- Auto Generación de Código (Scaffolding) CRUD
- Validaciones
- Poderoso soporte a Bases de Datos
- Full Soporte Ajax, jQuery integrado
- Autenticación y Autorización
- Gestión de errores y logging
- Urls Amigables
- Seguridad, Prevención de ataques comunes
- Sistema de Cache, de session
- Soporte a Código de Terceros y Extensiones
- Soporte de Temas y Skins
- Internacionalización (I18N) y Localización (L10N)
- Soporte de Pruebas Funcionales y Unitarias
- Documentación Detallada y Extensa Comunidad
www.plattinux.com.ve / @plattinux
Página 4 / 29
Sobre MVC
MVC – Modelo, Vista y Controlador
www.plattinux.com.ve / @plattinux
Página 5 / 29
Extensiones
Mas de 2044 extensiones
http://www.yiiframework.com/extensions/
Categorías
● Autenticación ● Cache ● Consola ● Base de Datos ● Fecha y
Tiempo ● Manejo de Errores ● Sistema de Archivos ● Bitacoras ●Mail
● Redes ● Seguridad ● Interfaz de Usuario ● Validación ● Web
Service ● Otras...
En caso de no existir lo que busca, la mayoría de librerías de un
tercero se pueden usar en yii así:
- Colocar en el directorio extensions ubicado dentro de protected
- llamarla desde la aplicación así:
Yii::createComponent('application.extensions.tulibreria');
www.plattinux.com.ve / @plattinux
Página 6 / 29
Apariencia / Themes
Por defecto interfaz enriquecida con CSS y JQuery
www.plattinux.com.ve / @plattinux
Página 7 / 29
Apariencia / Themes
http://yii.themefactory.net/
www.plattinux.com.ve / @plattinux
Página 8 / 29
Yii funciona de lujo con servidores web ligeros y de alto rendimiento como:
Rendimiento en Yii
Yii esta preparado y optimizado para trabajar con servidores de Cache como:
PHP APCu
www.plattinux.com.ve / @plattinux
Página 9 / 29
Aplicaciones en Yii
Conocer mas sistemas desarrollados en YII:
http://yii.poweredsites.org/
http://www.yiiframework.com/forum/index.php?/forum/14-yii-powered-applications/
www.plattinux.com.ve / @plattinux
Página 10 / 29
Aplicaciones en Yii
Conocer mas sistemas desarrollados en YII:
http://yii.poweredsites.org/
http://www.yiiframework.com/forum/index.php?/forum/14-yii-powered-applications/
www.plattinux.com.ve / @plattinux
Página 11 / 29
Aplicaciones en Yii de Plattinux
www.plattinux.com.ve / @plattinux
Página 12 / 29
Aplicaciones en Yii de Plattinux
www.plattinux.com.ve / @plattinux
Página 13 / 29
Aplicaciones en Yii de Plattinux
www.plattinux.com.ve / @plattinux
Página 14 / 29
Instalar y arrancar Yii
1 - Instalamos servidor web, lenguaje de programación y base de datos en software libre
aptitude install apache2 php5 php5-cli postgresql-9.4 php5-pgsql
2 – Descargamos y descomprimimos en document root, Renombramos de yii-1.1.17.467ff50 a yii
http://www.yiiframework.com/download/
3 – Ejecutamos la creación de una estructura de sistema en Yii
www$php yii/framework/yiic.php webapp yiitwitter/
Create a Web application under '/home/leninmhs/www/yiitwitter'? (yes|no) [no]:
www.plattinux.com.ve / @plattinux
Página 15 / 29
Demostración:
Acción de demostrar que determinada cosa es verdad o se cumple.
Demostración
1 – Configuraremos nuestra aplicación
2 – Generaremos un modulo que inserte, modifique y elimine en base de
datos postgreSQL
3 – Generaremos gráfico de torta y de barras
www.plattinux.com.ve / @plattinux
Página 16 / 29
Diagrama Entidad – Relación / PostgreSQL
Base de Datos: flisol2016
Modelo de datos práctica Yii
www.plattinux.com.ve / @plattinux
Página 17 / 29
Instalar y arrancar Yii
Manos a la obra programemos nuestro sistema...
www.plattinux.com.ve / @plattinux
Página 18 / 29
Recorrido interfaz de Yii
http://localhost/flisol2016/
Configuración de Yii
Archivo de configuración Yii
www/flisol2016/protected/config/main.php
Cadena de conexión a base de datos
www/yiitwitter/protected/config/database.php
'db'=>array(
),
'connectionString' => 'pgsql:host=localhost;dbname=flisol2016',
'emulatePrepare' => true,
'username' => 'postgres',
'password' => 'tuclave',
'charset' => 'utf8',
Habilitar módulo de generación Gii
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'Enter Your Password Here',
// If removed, Gii defaults to localhost only. Edit carefully to taste.
'ipFilters'=>array('127.0.0.1','::1'),
Descomentar este bloque
),
Acceder a Gii → localhost/flisol2016/index.php?r=gii
www.plattinux.com.ve / @plattinux
Página 19 / 29
Directorios Yii
Estructura general
Controladores
Modelos
Vistas
Vistas
www.plattinux.com.ve / @plattinux
Página 20 / 29
Luego de generar los modelos y CRUD...
Ajustaremos el formulario en flisol2016/protected/views/participante/_form.php
Formularios en Yii
● Comentamos el campo “fecha_creacion”
● Agregamos 'format'=>'yyyy/mm/dd' en options al datePickerGroup
● Sustituimos textFieldGroup por textAreaGroup en el campo biografía
● Sustituir textFieldGroup por fileFieldGroup en el campo foto_perfil
● Agregar en la declaración del formulario: 'htmlOptions' => array('enctype' =>
'multipart/form-data'),
● Comentar el campo fk_curso y agregar lo siguiente:
<?php
echo $form->dropDownListGroup($model, 'fk_curso', array('wrapperHtmlOptions' => array('class' => 'col-sm-5',),
'widgetOptions' => array(
'data' => CHtml::listData(Curso::model()->findAll(array('order' => 'nombre')), 'id_curso', 'nombre'),
'htmlOptions' => array('empty' => 'Seleccione el curso en el que quisiera participar'),
))); ?>
www.plattinux.com.ve / @plattinux
Página 21 / 29
Validaciones YiiBooster
Validaciones en los modelos de Yii
array('correo', 'email'),
array('sitioweb', 'url'),
array('cedula, correo', 'unique', 'caseSensitive'=>false ),
array('telefono', 'length', 'max'=>15),
array('foto_perfil', 'length', 'max' => 255, 'tooLong' => '{attribute} el nombre del archivo es muy
largo (max {max} caracteres).', 'on' => 'insert,upload'),
array('foto_perfil', 'file', 'types' => 'jpg,jpeg,gif,png', 'allowEmpty'=>true, 'maxSize' => 1024 * 1024
* 2, 'tooLarge' => 'La foto debe ser menor a 2MB !!!', 'on' => 'insert, upload'),
www.plattinux.com.ve / @plattinux
Página 22 / 29
Formularios YiiBooster
Para subir el archivo de la foto al servidor haremos lo siguiente:
En el controlador flisol2016/protected/controllers/ParticipanteController.php
Agregaremos en la acción actionCreate
Agregar después de $model->attributes y antes del save
$model->foto_perfil=CUploadedFile::getInstance($model,'foto_perfil');
Agregar dentro del save (colocarle las llaves al save)
if(!empty($model->foto_perfil)){
$model->foto_perfil->saveAs(Yii::getPathOfAlias('webroot')."/images/".$model->foto_perfil);
}
www.plattinux.com.ve / @plattinux
Página 23 / 29
Modificaremos el GridView → protected/view/usuario/admin
GridView en Yii
Ajustaremos los campos que muestra la grilla
'fk_curso' => array(
'name' => 'fk_curso',
'value' =>'$data->fkCurso->nombre',
'filter' => CHtml::listData(Curso::model()->findAll(), 'id_curso', 'nombre'),
),
'twitter'=> array(
'type'=>'raw',
'name'=>'twitter',
'value'=> 'Chtml::link($data->twitter, "http://twitter.com/".$data->twitter,array("target"=>"_blank") )',
),
),
array(
'foto_perfil'=>
'type'=>'html',
'header'=>'Foto',
'name'=>'foto_perfil',
'value'=>'CHtml::image(Yii::app()->baseUrl."/images/".$data->foto_perfil,"$data-
>foto_perfil",array("height"=>"80", "width"=>"80") )',
'filter' =>'',
),
'fecha_creacion' => array(
'header'=>'Registrado en',
'name'=>'fecha_creacion',
'value' => 'date("d/m/Y", strtotime($data->fecha_creacion))' ,
'htmlOptions'=>array('width'=>'120px', 'style' => 'text-align: center;'),
www.plattinux.com.ve / @plattinux
Página 24 / 29
Gráficos estadísticos
www.plattinux.com.ve / @plattinux
Página 25 / 29
Generar gráficos estadísticos en Yii
Crearemos la siguiente acción y la agregaremos en
protected/controllers/ParticipanteController.php:
public function actionEstadisticaCurso() {
$titulo = "Cantidad de Cursos Disponibles";
$subtitulo = "Datos tomados hasta el ".date("d/m/Y h:m A");
$consulta = Yii::app()->db->createCommand('SELECT p.id_curso, p.nombre,
(SELECT COUNT(u.id_participante)
Comentarios de: Entendiendo Yii Framework (0)
No hay comentarios