SlideShare una empresa de Scribd logo
Lenin Hernandez
Entendiendo Yii Framework
Página 1 / 29www.plattinux.com.ve / @plattinux
leninmhs@plattinux.com.ve
leninmhs.wordpress.com
@plattinux
Página 2 / 29www.plattinux.com.ve / @plattinux
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
Página 3 / 29www.plattinux.com.ve / @plattinux
”Yii es un framework de alto rendimiento escrito en PHP
para el desarrollo rápido de aplicaciones web”
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 de comercio electrónico (e-commerce), etc.
www.yiiframework.com
- 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
Sobre Yii
Yes, it is
Página 4 / 29www.plattinux.com.ve / @plattinux
- 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
Características Yii
Página 5 / 29www.plattinux.com.ve / @plattinux
Sobre MVC
MVC – Modelo, Vista y Controlador
Página 6 / 29www.plattinux.com.ve / @plattinux
Extensiones
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');
Mas de 2044 extensiones
http://www.yiiframework.com/extensions/
Página 7 / 29www.plattinux.com.ve / @plattinux
Apariencia / Themes
Por defecto interfaz enriquecida con CSS y JQuery
Página 8 / 29www.plattinux.com.ve / @plattinux
Apariencia / Themes
http://yii.themefactory.net/
Página 9 / 29www.plattinux.com.ve / @plattinux
Rendimiento en Yii
Yii funciona de lujo con servidores web ligeros y de alto rendimiento como:
Yii esta preparado y optimizado para trabajar con servidores de Cache como:
PHP APCu
Página 10 / 29www.plattinux.com.ve / @plattinux
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/
Página 11 / 29www.plattinux.com.ve / @plattinux
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/
Página 12 / 29www.plattinux.com.ve / @plattinux
Aplicaciones en Yii de Plattinux
Página 13 / 29www.plattinux.com.ve / @plattinux
Aplicaciones en Yii de Plattinux
Página 14 / 29www.plattinux.com.ve / @plattinux
Aplicaciones en Yii de Plattinux
Página 15 / 29www.plattinux.com.ve / @plattinux
Instalar y arrancar Yii
aptitude install apache2 php5 php5-cli postgresql-9.4 php5-pgsql
1 - Instalamos servidor web, lenguaje de programación y base de datos en software libre
http://www.yiiframework.com/download/
2 – Descargamos y descomprimimos en document root, Renombramos de yii-1.1.17.467ff50 a yii
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]:
Página 16 / 29www.plattinux.com.ve / @plattinux
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
Acción de demostrar que determinada cosa es verdad o se cumple.
Demostración:
Página 17 / 29www.plattinux.com.ve / @plattinux
Modelo de datos práctica Yii
Diagrama Entidad – Relación / PostgreSQL
Base de Datos: flisol2016
Página 18 / 29www.plattinux.com.ve / @plattinux
Instalar y arrancar Yii
Manos a la obra programemos nuestro sistema...
Página 19 / 29www.plattinux.com.ve / @plattinux
Configuración de Yii
http://localhost/flisol2016/Recorrido interfaz de Yii
www/flisol2016/protected/config/main.phpArchivo de configuración Yii
Habilitar módulo de generación Gii
Descomentar este bloque
'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'),
),
Cadena de conexión a base de datos
'db'=>array(
'connectionString' => 'pgsql:host=localhost;dbname=flisol2016',
'emulatePrepare' => true,
'username' => 'postgres',
'password' => 'tuclave',
'charset' => 'utf8',
),
www/yiitwitter/protected/config/database.php
Acceder a Gii → localhost/flisol2016/index.php?r=gii
Página 20 / 29www.plattinux.com.ve / @plattinux
Directorios Yii
Modelos
VistasVistas
Controladores
Estructura general
Página 21 / 29www.plattinux.com.ve / @plattinux
Formularios en Yii
Luego de generar los modelos y CRUD...
Ajustaremos el formulario en flisol2016/protected/views/participante/_form.php
● 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'),
))); ?>
Validaciones YiiBooster
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'),
Página 22 / 29www.plattinux.com.ve / @plattinux
Validaciones en los modelos de Yii
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);
}
Página 23 / 29www.plattinux.com.ve / @plattinux
GridView en Yii
Página 24 / 29www.plattinux.com.ve / @plattinux
Modificaremos el GridView → protected/view/usuario/admin
'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") )',
),
'foto_perfil'=> array(
'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;'),
),
Ajustaremos los campos que muestra la grilla
Página 25 / 29www.plattinux.com.ve / @plattinux
Gráficos estadísticos
Generar gráficos estadísticos en Yii
Página 26 / 29www.plattinux.com.ve / @plattinux
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)
FROM participante u
JOIN curso p2 ON p2.id_curso = u.fk_curso
WHERE p.id_curso = p2.id_curso) AS cantidad
FROM curso p
GROUP BY p.id_curso, p.nombre
ORDER BY p.nombre')->queryAll();
foreach ( $consulta as $registro ){
$data[] = array('name'=> $registro["nombre"], 'y' => $registro["cantidad"], );
$categoria[] = array($registro["nombre"]);
}
$this->render('graficoBarras' , array( 'titulo' => $titulo, 'subtitulo' => $subtitulo,
'datos' => $data, 'categorias' => $categoria ));
}
Generar gráficos estadísticos en Yii
Página 27 / 29www.plattinux.com.ve / @plattinux
Crearemos el archivo graficoBarras.php en las vistas estadísticas y contendrá:
<section class="row">
<div class="col-lg-12">
<h1 class="page-header"><?php echo $titulo ?></h1>
</div>
</section>
<?php
$this->widget('booster.widgets.TbHighCharts', array(
'options' => array(
'title' => array(
'text' => $titulo,
'x' => -20 //center
),
'subtitle' => array(
'text' => $subtitulo,
'x' -20
),
'chart' => array(
'type' => 'bar',
),
'xAxis' => array( 'categories'=> $categorias ),
'series' => array( array('name' => $titulo, 'data' => $datos ) ),
'credits' => array( 'enabled' => true, 'text' => 'Generado desde YiiTwitter en fecha: '.date("d/m/Y h:m A") ),
) ) );
?>
<div class="form-actions">
<div class="pull-left">
<?php
$this->widget('booster.widgets.TbButton', array(
//'type'=>'primary',
'label' => 'Regresar al Indice de Estadisticas',
'icon' => 'glyphicon glyphicon-chevron-left',
'size' => 'large',
'context' => 'danger',
'buttonType' => 'link',
'url' => CHtml::normalizeUrl(array('admin')),
));
?>
</div>
</div>
Generar gráficos estadísticos en Yii
Página 28 / 29www.plattinux.com.ve / @plattinux
Aplicación disponible de forma publica en:
flisol2016.plattinux.com.ve
Página 29 / 29www.plattinux.com.ve / @plattinux
Síguenos en nuestras redes sociales @plattinux
Escríbenos a contacto@plattinux.com.ve
Y visita nuestra pagina www.plattinux.com.ve para información
sobre nuestros cursos, talleres y servicios.
Gracias Totales...

Más contenido relacionado

Similar a Entendiendo Yii - Flisol 2016

Construyendo RIA con Silverlight 2
Construyendo RIA con Silverlight 2Construyendo RIA con Silverlight 2
Construyendo RIA con Silverlight 2
Christian Strevel
 
El Nuevo Internet Explorer 9
El Nuevo Internet Explorer 9El Nuevo Internet Explorer 9
El Nuevo Internet Explorer 9
Eventos Creativos
 
Lecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialLecciones aprendidas creando una red social
Lecciones aprendidas creando una red social
Roberto Luis Bisbé
 
Presentación html5
Presentación html5Presentación html5
Presentación html5
aydimdagam
 
01 webinar caso_migracion_portalweb_v1.4.1-intix
01 webinar caso_migracion_portalweb_v1.4.1-intix01 webinar caso_migracion_portalweb_v1.4.1-intix
01 webinar caso_migracion_portalweb_v1.4.1-intix
Roger CARHUATOCTO
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
lenny
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
INSIGNIA4U
 
CLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptxCLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptx
DiseoGrfico14
 
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5
Franklin Calle Zapata
 
OVA DISEÑO ORACLE II Administración.pptx
OVA DISEÑO ORACLE II Administración.pptxOVA DISEÑO ORACLE II Administración.pptx
OVA DISEÑO ORACLE II Administración.pptx
MARGOTHLORENAMARTINE
 
Presentacion web2py
Presentacion web2pyPresentacion web2py
Presentacion web2py
Alfonso de la Guarda Reyes
 
Directorio betabeers - symfony madrid
Directorio betabeers - symfony madridDirectorio betabeers - symfony madrid
Directorio betabeers - symfony madrid
betabeers
 
Documento Web2Py
Documento Web2PyDocumento Web2Py
Documento Web2Py
Frameworkuce Uce
 
Prueba1.pdf
Prueba1.pdfPrueba1.pdf
Prueba1.pdf
testgrupocomex
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
Gabriela Soto
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
jcarazo
 
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
7th_Sign
 
Seguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHPSeguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHP
7th_Sign
 
Silverstripe equipo7-victoriano-bartolo-jesus-martinez
Silverstripe equipo7-victoriano-bartolo-jesus-martinezSilverstripe equipo7-victoriano-bartolo-jesus-martinez
Silverstripe equipo7-victoriano-bartolo-jesus-martinez
jesus_mistico
 
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
SergioIglesiasNET
 

Similar a Entendiendo Yii - Flisol 2016 (20)

Construyendo RIA con Silverlight 2
Construyendo RIA con Silverlight 2Construyendo RIA con Silverlight 2
Construyendo RIA con Silverlight 2
 
El Nuevo Internet Explorer 9
El Nuevo Internet Explorer 9El Nuevo Internet Explorer 9
El Nuevo Internet Explorer 9
 
Lecciones aprendidas creando una red social
Lecciones aprendidas creando una red socialLecciones aprendidas creando una red social
Lecciones aprendidas creando una red social
 
Presentación html5
Presentación html5Presentación html5
Presentación html5
 
01 webinar caso_migracion_portalweb_v1.4.1-intix
01 webinar caso_migracion_portalweb_v1.4.1-intix01 webinar caso_migracion_portalweb_v1.4.1-intix
01 webinar caso_migracion_portalweb_v1.4.1-intix
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
CLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptxCLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptx
 
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5
Proyecto H3m Unisiga2 Proceso Instalacion 1 De 5
 
OVA DISEÑO ORACLE II Administración.pptx
OVA DISEÑO ORACLE II Administración.pptxOVA DISEÑO ORACLE II Administración.pptx
OVA DISEÑO ORACLE II Administración.pptx
 
Presentacion web2py
Presentacion web2pyPresentacion web2py
Presentacion web2py
 
Directorio betabeers - symfony madrid
Directorio betabeers - symfony madridDirectorio betabeers - symfony madrid
Directorio betabeers - symfony madrid
 
Documento Web2Py
Documento Web2PyDocumento Web2Py
Documento Web2Py
 
Prueba1.pdf
Prueba1.pdfPrueba1.pdf
Prueba1.pdf
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
 
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
[Flisol2011] Seguridad en el Desarrollo de Aplicaciones Web PHP
 
Seguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHPSeguridad en el Desarrollo de Aplicaciones Web PHP
Seguridad en el Desarrollo de Aplicaciones Web PHP
 
Silverstripe equipo7-victoriano-bartolo-jesus-martinez
Silverstripe equipo7-victoriano-bartolo-jesus-martinezSilverstripe equipo7-victoriano-bartolo-jesus-martinez
Silverstripe equipo7-victoriano-bartolo-jesus-martinez
 
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
 

Último

Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
giampierdiaz5
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
AMADO SALVADOR
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
yuberpalma
 
Uso de las Tics en la vida cotidiana.pptx
Uso de las Tics en la vida cotidiana.pptxUso de las Tics en la vida cotidiana.pptx
Uso de las Tics en la vida cotidiana.pptx
231485414
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
larapalaciosmonzon28
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
KukiiSanchez
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
luiscohailatenazoa0
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
gisellearanguren1
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
cecypozos703
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
Paola De la Torre
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
AbrahamCastillo42
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
leia ereni
 
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdktrabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
KukiiSanchez
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
al050121024
 
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajasSlideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
AdrianaRengifo14
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
cbtechchihuahua
 
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptxLA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
pauca1501alvar
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
YashiraPaye
 
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMAUML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
martinezluis17
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
larapalaciosmonzon28
 

Último (20)

Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdfPresentación Seguridad Digital Profesional Azul Oscuro (1).pdf
Presentación Seguridad Digital Profesional Azul Oscuro (1).pdf
 
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...
 
625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf625204013-64-Camino-a-----La-Lectura.pdf
625204013-64-Camino-a-----La-Lectura.pdf
 
Uso de las Tics en la vida cotidiana.pptx
Uso de las Tics en la vida cotidiana.pptxUso de las Tics en la vida cotidiana.pptx
Uso de las Tics en la vida cotidiana.pptx
 
Nuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsadNuevos tiempos, nuevos espacios.docxdsdsad
Nuevos tiempos, nuevos espacios.docxdsdsad
 
TIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololoTIC en educacion.rtf.docxlolololololololo
TIC en educacion.rtf.docxlolololololololo
 
La Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docxLa Inteligencia Artificial en la actualidad.docx
La Inteligencia Artificial en la actualidad.docx
 
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANOREVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
REVISTA TECNOLOGICA PARA EL DESARROLLO HUMANO
 
El uso de las TIC por Cecilia Pozos S..pptx
El uso de las TIC  por Cecilia Pozos S..pptxEl uso de las TIC  por Cecilia Pozos S..pptx
El uso de las TIC por Cecilia Pozos S..pptx
 
Flows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos FeaturesFlows: Mejores Prácticas y Nuevos Features
Flows: Mejores Prácticas y Nuevos Features
 
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)
 
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIAMONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
MONOGRAFIA memoria RAM.docx trabajo DE TECNOLOGIA
 
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdktrabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
trabajo práctico kuikikiikkidfsmdklfskdnfklsdnfknsdk
 
Second Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro TapiaSecond Life, informe de actividad del maestro Tapia
Second Life, informe de actividad del maestro Tapia
 
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajasSlideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
Slideshare: definiciòn, registrarse, presentaciones, ventajas y desventajas
 
Manual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputosManual de Soporte y mantenimiento de equipo de cómputos
Manual de Soporte y mantenimiento de equipo de cómputos
 
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptxLA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptx
 
Inteligencia Artificial
Inteligencia ArtificialInteligencia Artificial
Inteligencia Artificial
 
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMAUML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
UML_clase_02_UML_casos_de_uso_05 EN DIAGRAMA
 
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfqedublogs info.docx asdasfasfsawqrdqwfqwfqwfq
edublogs info.docx asdasfasfsawqrdqwfqwfqwfq
 

Entendiendo Yii - Flisol 2016

  • 1. Lenin Hernandez Entendiendo Yii Framework Página 1 / 29www.plattinux.com.ve / @plattinux leninmhs@plattinux.com.ve leninmhs.wordpress.com @plattinux
  • 2. Página 2 / 29www.plattinux.com.ve / @plattinux 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
  • 3. Página 3 / 29www.plattinux.com.ve / @plattinux ”Yii es un framework de alto rendimiento escrito en PHP para el desarrollo rápido de aplicaciones web” 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 de comercio electrónico (e-commerce), etc. www.yiiframework.com - 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 Sobre Yii Yes, it is
  • 4. Página 4 / 29www.plattinux.com.ve / @plattinux - 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 Características Yii
  • 5. Página 5 / 29www.plattinux.com.ve / @plattinux Sobre MVC MVC – Modelo, Vista y Controlador
  • 6. Página 6 / 29www.plattinux.com.ve / @plattinux Extensiones 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'); Mas de 2044 extensiones http://www.yiiframework.com/extensions/
  • 7. Página 7 / 29www.plattinux.com.ve / @plattinux Apariencia / Themes Por defecto interfaz enriquecida con CSS y JQuery
  • 8. Página 8 / 29www.plattinux.com.ve / @plattinux Apariencia / Themes http://yii.themefactory.net/
  • 9. Página 9 / 29www.plattinux.com.ve / @plattinux Rendimiento en Yii Yii funciona de lujo con servidores web ligeros y de alto rendimiento como: Yii esta preparado y optimizado para trabajar con servidores de Cache como: PHP APCu
  • 10. Página 10 / 29www.plattinux.com.ve / @plattinux 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/
  • 11. Página 11 / 29www.plattinux.com.ve / @plattinux 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/
  • 12. Página 12 / 29www.plattinux.com.ve / @plattinux Aplicaciones en Yii de Plattinux
  • 13. Página 13 / 29www.plattinux.com.ve / @plattinux Aplicaciones en Yii de Plattinux
  • 14. Página 14 / 29www.plattinux.com.ve / @plattinux Aplicaciones en Yii de Plattinux
  • 15. Página 15 / 29www.plattinux.com.ve / @plattinux Instalar y arrancar Yii aptitude install apache2 php5 php5-cli postgresql-9.4 php5-pgsql 1 - Instalamos servidor web, lenguaje de programación y base de datos en software libre http://www.yiiframework.com/download/ 2 – Descargamos y descomprimimos en document root, Renombramos de yii-1.1.17.467ff50 a yii 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]:
  • 16. Página 16 / 29www.plattinux.com.ve / @plattinux 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 Acción de demostrar que determinada cosa es verdad o se cumple. Demostración:
  • 17. Página 17 / 29www.plattinux.com.ve / @plattinux Modelo de datos práctica Yii Diagrama Entidad – Relación / PostgreSQL Base de Datos: flisol2016
  • 18. Página 18 / 29www.plattinux.com.ve / @plattinux Instalar y arrancar Yii Manos a la obra programemos nuestro sistema...
  • 19. Página 19 / 29www.plattinux.com.ve / @plattinux Configuración de Yii http://localhost/flisol2016/Recorrido interfaz de Yii www/flisol2016/protected/config/main.phpArchivo de configuración Yii Habilitar módulo de generación Gii Descomentar este bloque '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'), ), Cadena de conexión a base de datos 'db'=>array( 'connectionString' => 'pgsql:host=localhost;dbname=flisol2016', 'emulatePrepare' => true, 'username' => 'postgres', 'password' => 'tuclave', 'charset' => 'utf8', ), www/yiitwitter/protected/config/database.php Acceder a Gii → localhost/flisol2016/index.php?r=gii
  • 20. Página 20 / 29www.plattinux.com.ve / @plattinux Directorios Yii Modelos VistasVistas Controladores Estructura general
  • 21. Página 21 / 29www.plattinux.com.ve / @plattinux Formularios en Yii Luego de generar los modelos y CRUD... Ajustaremos el formulario en flisol2016/protected/views/participante/_form.php ● 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'), ))); ?>
  • 22. Validaciones YiiBooster 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'), Página 22 / 29www.plattinux.com.ve / @plattinux Validaciones en los modelos de Yii
  • 23. 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); } Página 23 / 29www.plattinux.com.ve / @plattinux
  • 24. GridView en Yii Página 24 / 29www.plattinux.com.ve / @plattinux Modificaremos el GridView → protected/view/usuario/admin '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") )', ), 'foto_perfil'=> array( '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;'), ), Ajustaremos los campos que muestra la grilla
  • 25. Página 25 / 29www.plattinux.com.ve / @plattinux Gráficos estadísticos
  • 26. Generar gráficos estadísticos en Yii Página 26 / 29www.plattinux.com.ve / @plattinux 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) FROM participante u JOIN curso p2 ON p2.id_curso = u.fk_curso WHERE p.id_curso = p2.id_curso) AS cantidad FROM curso p GROUP BY p.id_curso, p.nombre ORDER BY p.nombre')->queryAll(); foreach ( $consulta as $registro ){ $data[] = array('name'=> $registro["nombre"], 'y' => $registro["cantidad"], ); $categoria[] = array($registro["nombre"]); } $this->render('graficoBarras' , array( 'titulo' => $titulo, 'subtitulo' => $subtitulo, 'datos' => $data, 'categorias' => $categoria )); }
  • 27. Generar gráficos estadísticos en Yii Página 27 / 29www.plattinux.com.ve / @plattinux Crearemos el archivo graficoBarras.php en las vistas estadísticas y contendrá: <section class="row"> <div class="col-lg-12"> <h1 class="page-header"><?php echo $titulo ?></h1> </div> </section> <?php $this->widget('booster.widgets.TbHighCharts', array( 'options' => array( 'title' => array( 'text' => $titulo, 'x' => -20 //center ), 'subtitle' => array( 'text' => $subtitulo, 'x' -20 ), 'chart' => array( 'type' => 'bar', ), 'xAxis' => array( 'categories'=> $categorias ), 'series' => array( array('name' => $titulo, 'data' => $datos ) ), 'credits' => array( 'enabled' => true, 'text' => 'Generado desde YiiTwitter en fecha: '.date("d/m/Y h:m A") ), ) ) ); ?> <div class="form-actions"> <div class="pull-left"> <?php $this->widget('booster.widgets.TbButton', array( //'type'=>'primary', 'label' => 'Regresar al Indice de Estadisticas', 'icon' => 'glyphicon glyphicon-chevron-left', 'size' => 'large', 'context' => 'danger', 'buttonType' => 'link', 'url' => CHtml::normalizeUrl(array('admin')), )); ?> </div> </div>
  • 28. Generar gráficos estadísticos en Yii Página 28 / 29www.plattinux.com.ve / @plattinux Aplicación disponible de forma publica en: flisol2016.plattinux.com.ve
  • 29. Página 29 / 29www.plattinux.com.ve / @plattinux Síguenos en nuestras redes sociales @plattinux Escríbenos a contacto@plattinux.com.ve Y visita nuestra pagina www.plattinux.com.ve para información sobre nuestros cursos, talleres y servicios. Gracias Totales...