Top Banner

of 19

Apuntes Taller Yii

Oct 15, 2015

Download

Documents

sfiorese_1
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    DESCRIPCIN:El taller de introduccin al desarrollo utilizando el Framework Yii, es una introduccin terica y prctica al concepto de programacin orientada a objetos usando un framework, y al patrn de arquitectura MVC - Modelo Vista Controlador, donde los asistentes utilizarn las herramientas y opciones incorporadas en este framework, para el desarrollo rpido de aplicaciones.

    DIRIGIDO A:- Desarrolladores PHP que deseen comenzar a utilizar este framework- Estudiantes que necesiten aprender a utilizar herramientas de desarrollo de alto nivel- Programadores que busquen una forma eficiente y efectiva, de desarrollar aplicaciones de clase mundial, rpidamente y con menor esfuerzo.

    COMPETENCIAS QUE SE DESARROLLARN:- Capacidad de instalacin y configuracin del Framework Yii- Capacidad de diseo orientado a la arquitectura MVC- Capacidad para creacin de aplicaciones web

    OBJETIVOS ESPECFICOS:- Saber instalar y configurar el Framework Yii- Saber modelar un sistema para implementarlo en el Framework- Saber implementar las rutinas CRUD de un sistema- Saber instalar extensiones y modificar el funcionamiento bsico del Framework

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 1 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    CONTENIDOS:UNIDAD 1: INTRODUCCIN AL FRAMEWORK YIIObjetivo: Conocer los aspectos fundamentales de su funcionamiento

    a) Introduccin a la programacin con arquitectura MVCb) Diseo de aplicaciones basndose en MVCc) Introduccin al funcionamiento del Framework Yiid) Instalacin y preparacin del Frameworke) Configuracin y conexin a una base de datos

    UNIDAD 2: IMPLEMENTANDO OPERACIONES CRUDObjetivo: Implementar las funciones de operacin con la base de datos

    a) Uso de opciones y herramientas del Frameworkb) Construccin y composicin del Scaffoldingc) Control de eventos (beforeSave() y afterSave())

    UNIDAD 3: EXTENDIENDO LA FUNCIONALIDAD DE YIIObjetivo: Editar y controlar los componentes de la vista

    a) Repositorio de componentes adicionalesb) Extendiendo el funcionamiento de Yiic) Agregando componentes a la vista con Yii (Ajax, Calendarios, Listas, etc)d) Modificando el Controlador y Modelo para soportar las funciones adicionales

    UNIDAD 4: IMPLEMENTANDO AUTENTICACIN DE USUARIOSObjetivo: Agregar las funciones de control de acceso y permisos

    a) Crear el repositorio de datos de usuariosb) Modificar el controlador y modelo para dar soporte a la autenticacinc) Configurar las reglas de acceso, para otorgar permisos personalizados.

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 2 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    METODOLOGA:La metodologa se ejecuta de modo tal que cada sesin se compone de una pequea parte terica y otra parte prctica, donde los participantes instalan,configuran y utilizan el Framework instalado en sus mquinas.

    LAS ACTIVIDADES CONTEMPLAN:Introduccin a la filosofa y lgica de funcionamiento del FrameworkSesiones divididas en mdulos segn temtica conteniendo:o Ejercicios prcticos de uso y configuracin:o Ejecucin de Instruccioneso Bsqueda de informacin en Interneto Grupos de discusino implementacin de las soluciones

    MATERIALES PROPORCIONADOS:1. Presentacin del Taller

    INFRAESTRUCTURA NECESARIA:1. Sala2. Un PC por participante3. Proyector4. Internet

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 3 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    Unidad 1: Introduccin al Framework Yii

    Objetivo: Conocer los aspectos fundamentales de su funcionamiento

    a) Introduccin a la programacin con arquitectura MVCModelo Vista Controlador (MVC) es un patrn o modelo de abstraccin de desarrollo de software que separa los datos de una aplicacin, la interfaz de usuario, y la lgica de negocio en tres componentes distintos. El patrn de llamada y retorno MVC, se ve frecuentemente en aplicaciones web, donde la vista es la pgina HTML y el cdigo que provee de datos dinmicos a la pgina. El modelo es el Sistema de Gestin de Base de Datos y la Lgica de negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista.

    b) Diseo de aplicaciones basndose en MVCAntes de comenzar con el diseo de aplicaciones, debemos conocer el flujo del funcionamiento bsico del paradigma, por lo que observando la imagen a continuacin, podremos describir su funcionamiento:

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 4 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    El Modelo:Esta es la representacin especfica de la informacin con la cual el sistema opera, en si, realiza la gestin sobre el repositorio de informacin, sea del tipo que sea dicho repositorio.

    La Vista:Este presenta el modelo en un formato adecuado para interactuar, usualmente constituye la interfaz de usuario.

    El Controlador:Este responde a eventos, usualmente acciones del usuario, e invoca las peticiones al modelo y, probablemente, despliega los resultados a la vista.

    Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo que sigue el control generalmente es el siguiente:

    1. El usuario interacta con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botn, enlace, etc.)

    2. El controlador recibe (por parte de los objetos de la interfaz-vista) la notificacin de la accin solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a travs de un gestor de eventos (handler) o callback.

    3. El controlador accede al modelo, actualizndolo, posiblemente modificndolo de forma adecuada a la accin solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario). Los controladores complejos estn a menudo estructurados usando un patrn de comando que encapsula las acciones y simplifica su extensin.

    4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se reflejan los cambios en el modelo (por ejemplo, produce un listado del contenido del carro de la compra). El modelo no debe tener conocimiento directo sobre la vista. Sin embargo, se podra utilizar el patrn Observador para proveer cierta indireccin entre el modelo y la vista, permitiendo al modelo notificar a los interesados de cualquier cambio. Un objeto vista puede registrarse con el modelo y esperar a los cambios, pero aun as el modelo en s mismo sigue sin saber nada de la vista. Este uso del patrn Observador no es posible en las aplicaciones Web puesto

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 5 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    que las clases de la vista estn desconectadas del modelo y del controlador. En general el controlador no pasa objetos de dominio (el modelo) a la vista aunque puede dar la orden a la vista para que se actualice.

    5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.

    c) Introduccin al funcionamiento del Framework YiiYii es un framework para PHP de alto rendimiento basado en componentes web para desarrollar aplicaciones de gran escala. Permite una mxima reusabilidad en la programacin web y puede acelerar significativamente el proceso de desarrollo.Yii es un framework genrico 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 diseado para trabajar con aplicaciones web de trafico alto, como portales, foros, CMS, comercios electrnicos, etc.Como la mayora de los framework para PHP , Yii es un framework que sigue el patrn de diseo MVC.Yii sobresale sobre los otros frameworks PHP por su eficiencia y su rica librera de funcionalidades as como tambin su clara documentacin, puesto que es el resultado de la experiencia que tienen sus autores en el desarrollo de aplicaciones web ricas en funcionalidad y la investigacin y reflejo de los frameworks y aplicaciones ms populares para programar Webs.

    Para crear aplicaciones utilizando Yii, debe seguir un simple proceso compuesto de 3 pasos:

    Crear la base de datos Generar el cdigo PHP de la base, utilizando Yii Modificar el cdigo para adecuarlo a sus necesidades.

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 6 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    Ejemplo de funcionamiento del framework Yii:

    1. Un usuario hace una peticin en la siguiente URL:http://www.example.com/index.php?r=post/show&id=1Y el servidor web maneja la peticin ejecutando el script index.php.

    2. El script crea una instancia de la aplicacin y la ejecuta.3. La aplicacion obtiene la informacin detallada de la peticin de los usuarios

    desde un componente de la aplicacin llamado request(peticin).4. La aplicacin determina la peticin del controlador y acta con la ayuda de

    un componente de la aplicacin llamado urlManager(manejador de urls).5. Para este ejmplo, el controlador es Post que hace referencia a la clase

    PostController; y la accin es show(mostrar) el cul su significado es determinado por el controlador

    6. La aplicacin crea una instancia de la peticin del controlador para mas adelante manejar la peticin del usuario. El controlador determina que la accin show(mostrar) se refiere a un mtodo llamado actionShow en la clase del controlador.

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 7 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    7. Entonces crea y ejecuta filtros (por ej: controles de acceso) asociados a esta accin. La accin es ejecutada si los filtros lo permiten.

    8. La accin lee un modelo Post el cul si ID es 1 en la base de datos.9. La accin asocia una vista llamada show(mostrar) con el modelo Post.10. La vista lee y muestra los atributos del modelo Post.11. La vista ejecuta algunos artilugios.12. Los resultados de la vista son embebidos en un diseo(layout)13. La accin completa la prestacin de la vista y muestra el resultado al usuario.

    d) Instalacin y preparacin del FrameworkPara instalar Yii, existen 2 mtodos, utilizar GIT para obtener la ltima versin o descargar la versin estable, sin embargo es recomendable hacerlo mediante este ltimo mtodo y actualizar el Framework con la versin oficial cada vez que una nueva esta disponible.

    NOTA: Al actualizar hay que fijarse y tener cuidado con las recomendaciones que aparecen en el Changelog.

    Instalar usando GIT:Al usar GIT, se descarga la ltima versin en desarrollo, por lo que podra generar algn inconveniente si la aplicamos a una implementacin que este funcionando en produccin.

    Con GIT instalado, basta ejecutar lo siguiente:

    git clone git @ github . com :yiisoft/yii.git

    Instalar usando versin estable:Descargar versin estable desde http :// www . yiiframework . com / download / en la opcin stable version, seleccionando bajar el archivo tar.gz o el zip.

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 8 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    Luego de obtener de alguna forma el framework, lo descomprimimos en alguna carpeta que no sea directamente visible desde el navegador.

    NOTA:A pesar de que Yii recomienda dejar la carpeta disponible con acceso web, recomendamos no dejar disponible su instalacin, para evitar problemas de seguridad, de todas formas, la funcionalidad no se ver afectada.

    La carpeta descomprimida tiene varias carpetas en su interior, pero la que nos interesa es una llamada Framework.Para sntesis, se recomienda seguir el siguiente proceso, a fin de facilitar posteriores actualizaciones:

    1. Crear una carpeta /en/alguna/parte/yii2. Mover la carpeta (algo as como yii-1.1.xxx), o la descargada con git, y la

    movemos a la carpeta antes creada.3. Creamos un enlace /en/alguna/parte/yii/current y apuntamos a la carpeta

    descomprimida.Con esto ya tendremos acceso al framework para hacer mltiples aplicaciones, y ser fcilmente actualizable.

    Para crear nuestra primera aplicacin, podemos ejecutar un proceso bastante simple, siguiendo un proceso que se describe a continuacin:

    $ php /en/alguna/parte/yii/current/framework/yiic webapp /mi/carpeta/web/miapp

    Esto crea en /mi/carpeta/web/miapp una aplicacin lista para comenzar a modificar, disponible en la direccin http://www.example.com/miapp/index.php y cuya estructura de directorios se describe en la pgina siguiente.

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 9 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 10 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    e) Configuracin y conexin a una base de datosPara utilizar una base de datos, primero se debe configurar la aplicacin para conectarse a la misma. Esto se realiza modificando el archivo de configuracin de la aplicacin WebRoot/miapp/protected/config/main.php como se muestra a continuacin.

    return array( ......

    'components'=>array( ......

    // para SQLite // db es el nombre de la base de datos

    //por defecto que usar la aplicacin 'db'=>array( 'connectionString'=>'sqlite:protected/data/source.db', ),

    // lo siguiente para una base de datos MYSQL 'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=miapp', 'emulatePrepare' => true, 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'tablePrefix' => '', ), ), ......);

    En el ejemplo anterior agregamos la entrada db al arreglo de components (componentes) el cual indica a la aplicacin que se conecte a la base de datos WebRoot/miapp/protected/data/source.db cuando sea necesario, o bien, a la base de datos miapp en el servidor MYSQL ubicado y ejecutandose en localhost.

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 11 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    Unidad 2: Implementando operaciones CRUD

    Objetivo: Implementar las funciones de operacin con la base de datos

    a) Uso de opciones y herramientas del Framework

    b) Construccin y composicin del Scaffolding

    La construccin del Scaffolding se logra realizando la configuracin del componente Gii, lo que se hace modificando el archivo protected/config/main.php, en modules:

    // uncomment the following to use Gii 'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'1234', // If removed, Gii defaults to localhost only. Edit carefully to taste. 'ipFilters'=>array('127.0.0.1','::1'), 'generatorPaths' => array( //'ext.giix.generators', // giix generators //'ext.giiplus', //'bootstrap.gii', ),

    Con esto, vamos a http :// hostname / miapp / index . php / gii y veremos algo similar a la imagen que aparece en la siguiente pgina.

    QUE ES EL SCAFFOLDLa palabra Scaffold est en ingls y en espaol significa Andamio, pero en programacin el scaffolding es un mtodo para construir aplicaciones basadas en bases de datos, esta tcnica est soportada por algunos Frameworks del tipo MVC en el cul el programador escribe una especificacin que describe cmo debe ser usada la base de datos.

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 12 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    Para generar los modelos, basados en nuestras tablas ya creadas en nuestra base de datos, entramos a Model Generator, y veremos algo similar a esto:

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 13 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    En Table Name, ponemos el nombre de la tabla, sin embargo se debera completar automticamente, as tambin en Model Class se completar solo segn el nombre de la tabla, y segn las convenciones de uso de maysculas del propio sistema.Luego hacer un Preview, para observar como debera quedar y Generate para generar los archivos.

    NOTA:La ruta donde se van a generar los modelos debera ser inscribible por el servidor web, para que el Framework pueda escribir y generar los archivos.

    Luego de esto, generamos el controlador respectivo, y las vistas bsicas, es decir, el CRUD, para lo cual vamos a la opcin CRUD Generator y se desplegar una pantalla similar a esta:

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 14 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    El campo Model Class se completara con los modelos que ya se han creado, y una vez ingresado, ControllerID tambin se llenar por si solo, manteniendo las convenciones. Luego repetiremos el proceso antes descrito, presionando Preview y Generate.

    Para verificar que lo construido esta disponible, podremos acceder a la ruta respectiva utilizando el navegador.

    c) Control de eventos (beforeSave() y afterSave())

    Estos mtodos permiten definir el comportamiento del sistema frente a la solicitud de guardar informacin, estos mtodos podrn ejecutarse antes o despus de almacenar la informacin. Estos metodos deben ser protected y se definen en el Modelo, ya que heredan de CModel.

    protected function beforeSave(){

    parent::beforeSave();

    //pasamos el pass a md5 para guardarlo en la base de datos as$this->password = md5($this->password);

    return true; // si no retorna true, debera lanzar una excepcin}

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 15 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    Unidad 3: Extendiendo la funcionalidad de Yii

    Objetivo: Editar y controlar los componentes de la vista

    a) Repositorio de componentes adicionalesGracias a su flexibilidad, el Framework puede ser extendido gracias a la inclusin de nuevos componentes, estos pueden obtenerse desde el repositorio oficial de extensiones, la que se encuentra en la siguiente direccin:

    http :// yiiframework . com / extensions

    b) Extendiendo el funcionamiento de YiiAunque el proceso de instalacin de una extensin siempre esta descrita en el mismo repositorio de extensiones, puede ser necesario habilitar el modulo para que este disponible, esto se logra agregando su nombre en el arreglo de modules, modificando el archivo:protected/config/main.php

    c) Agregando componentes a la vista con Yii (Ajax, Calendarios, Listas, etc)Cuando las vistas son generadas, se generan con datos y formularios muy bsicos, pero esto se puede mejorar realizando pequeas modificaciones, por ejemplo, si uno quiere que un input normal, despliegue un calendario pretendiendo ingresar una fecha, basta con reemplazar el input:

    echo $form->textField($model, 'date', array('maxlength' => 45));

    Por algo como esto:

    $this->widget('zii.widgets.jui.CJuiDatePicker', array( 'name'=>'Post[publication_date]',

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 16 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    'options'=>array( 'showAnim'=>'fold', 'changeMonth'=>true, 'changeYear'=>true, ), 'language'=>'es', 'htmlOptions'=>array( 'style'=>'height:20px;' ), ));

    Donde observamos que Post es el nombre del modelo, date es el nombre del atributo, $form es un CactiveForm por lo que siempre se relaciona con un modelo, y genera el nombre (name) del input, de modo que la variable $_POST['Post'] tenga el mismo nombre, si fuera un input normal con valores por defecto.Por otro lado, es posible tambin implementar relaciones, de modo que si un repositorio utiliza una llave fornea se seleccione los posibles valores desde una lista, esto se logra como se muestra en el siguiente ejemplo:

    echo $form->dropDownList($model, 'imagen_id', CHtml::listData(Imagen::model()->findAll(), 'id', 'nombre'), array('prompt'=>'Elija imagen...'))

    d) Modificando el Controlador y Modelo para soportar las funciones adicionales

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 17 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    Unidad 4: Implementando Autenticacin de Usuarios

    Objetivo: Agregar las funciones de control de acceso y permisos

    a) Crear el repositorio de datos de usuarios

    b) Modificar el controlador y modelo para dar soporte a la autenticacin por base de datosPara permitir una simple autenticacin mediante el uso del Modelo de gestin de usuarios, deberemos modificar el archivo:protected/components/UserIdentity.php

    Y dejarlo como se despliega en el siguiente ejemplo:

    public function authenticate(){$users=array(

    // username => password// 'demo'=>'demo',// 'admin'=>'admin',

    );$usersObjects = Usuario::model()->findAll();foreach($usersObjects as $u){

    $users[$u->username] = $u->password;}

    if(!isset($users[$this->username])) $this->errorCode=self::ERROR_USERNAME_INVALID; else if($users[$this->username]!==md5($this->password)) $this->errorCode=self::ERROR_PASSWORD_INVALID; else $this->errorCode=self::ERROR_NONE;

    return !$this->errorCode;}

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 18 de 19http://www.fundaciongnuchile.cl [email protected]

  • _______________________TALLER INTRODUCCIN FRAMEWORK Yii

    c) Configurar las reglas de acceso, para otorgar permisos personalizados.http :// www . yiiframework . com / wiki /328/ simple - rbac http :// www . yiiframework . com / wiki /120/ introduccion - al - control - de - acceso - basado - en - roles - rbac

    ____________________________________________________________________________Fundacin de Desarrollo Tecnolgico Libre Pgina 19 de 19http://www.fundaciongnuchile.cl [email protected]