Post on 20-Jan-2015
description
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Desarrollo rápido con PHP y Symfony(II) El Controlador
David J. Brenes Martínez
Curso de Extensión UniversitariaDesarrollo web avanzado
Universidad de Oviedo
2010/03/22
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Puntos de entrada
index.php, frontend_dev.php. . .El servidor web hace pasar todas las peticiones porellosEl punto de entrada decide el entorno y la aplicación aejecutarUna vez creado el controlador se le pasa laresponsabilidad de la ejecucionSe pueden desactivar mediante tareas de Symfony
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Entorno
Se dispone de 3 entornos: producción, desarrollo y testEl entorno de desarrollo proveé de información extra dedepuraciónEn sitio en producción hay que desactivar ese entorno
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Aplicacion
Cada punto de entrada corresponde a una aplicacióndistintaAl crear aplicaciones mediante tareas de symfony secrean sus puntos de entrada
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Filtros
Son pasos previos a la ejecucion de nuestro códigoSymfony declara filtros por defecto para realizardiversas tareasLos filtros se declaran en una pilaPermiten controlar la request antes de ejecutarse losfiltros inferioresPermiten modificar la respuesta tras ejecutarse larequest
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Módulos y acciones
El controlador se basa en la configuración de rutaspara decidir el módulo y acciónEl controlador puede pasar parámetros a la acción aejecutar
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
¿Acciones?
Son los trozos de lógica de negocio que se ejecutancon cada peticiónPermiten aislarnos de la complejidad del frameworkNos comunicamos con el modelo para solicitar datosTransformamos los datos y pedimos al modelo que losalmacenePasamos parámetros a la vista para mostrarlos
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Organización de las acciones
Todas en un fichero (actions.class.php)Ficheros aislados (*Action.class.php)Heredan de una acción básica del frameworkPodemos definir nuestra propia clase básica
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Pasos de ejecución de una acción
ValidaciónGestión de erroresEjecución de nuestro códigoDelegación en la vista
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Pasos de ejecución de una acción
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Acceso a la Request
Evitando el uso de $_GET, $_POST y $_FILESLa request es un objetoNos permite acceder a toda la información sobre lapetición
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Acceso a la Request
$request = $ th is −>getRequest ( ) ;
$request−>getMethod()−> getCookie ( $cookie )
$request−>isXmlHttpRequest ( )
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Parámetros de la Request
$request−>hasParameter ( $parameter )
$request−>getParameter ( $parameter )
$request−>getParameterHolder ()−> g e t A l l ( )
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Parámetros de la Request
hasParameter: Manera de determinar si el parámetroestá presente en la RequestgetParameter: Obtencion del valor de un parámetro
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
¿GET o POST?
Mezcla los parámetros GET y los POSTPodemos obtener el método de la petición medianteotra consulta a la Request
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Sesión del usuario
La clase User nos da accesoUser está asociada a la seguridad de las aplicacionesAlgunos plugins redefinen esa claseNos da acceso a los atributos del usuario
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Sesión del usuario
$ a t t r i b u t e = $ th is −>getUser ( )−>g e t A t t r i b u t e ( $at t r ibute_name )
$ th is −>getUser ()−> s e t A t t r i b u t e( $at t r ibute_name , $ a t t r i b u t e )
$ th is −>getUser ()−> g e t A t t r i b u t e H o l d e r ( )
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Parámetros Flash
Parámetros que pasan de una request a la siguienteUna manera sencilla de hacer persistir ciertos datosmientras se necesitanSe hace uso de la sesión del usuarioLos parámetros ‘caducan’ solos
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Parámetros Flash
$ a t t r i b u t e = $ th is −>getUser ( )−>getFlash ( $at t r ibute_name )
$ th is −>getUser ()−> setF lash( $at t r ibute_name , $ a t t r i b u t e )
$ th is −>getUser ()−> g e t A t t r i b u t e H o l d e r ( )
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Modelo
Se hace referencia a las clases del modelo que sedeseaLos objetos del modelo se usan como contenedores devalores
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Vista
Se crean propiedades del objeto y se les da un valorEse valor se puede recuperar en las vistas de maneratotalmente transparente.
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Vista
/ / En l a acción$ th is −>parameter = ’ parameter ’ ;
/ / En l a v i s t aecho $parameter ;
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Vista
¿Está bien pasarle a la vista objetos del modelo?
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Seleccionando la vista
El controlador permite seleccionar la vista concretaEl método execute devuelve el sufijo de la vista.Por defecto se devuelve Success.Podemos devolver valores propios
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Seleccionando la vista
/ / La v i s t a que se vera es accionSuccess . phpr e t u r n sfView : :SUCCESS;
/ / La v i s t a que se verá es acc ionEr ro r . phpr e t u r n sfView : :ERROR;
/ / La v i s t a que se verá es accionMobi le . phpr e t u r n " Mobi le " ;
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Referencias
Symfony Project: www.symfony-project.orgThe Symfony Reference Book: http://www.symfony-project.org/reference/1_4/en/
Practical Symfony:http://www.symfony-project.org/jobeet/1_4/Doctrine/en/
The Definitive Guide to Symfony:http://www.symfony-project.org/book/1_2/
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Créditos
La imagen de la cadena de ejecución de una acciónestá sacada de The Definitive Guide to Symfony,chapter 6.
Symfony
David J.Brenes
Martínez
Decidiendoqué ejecutar
Ejecutandoacciones
Parámetros
Comunicacióncon el modeloy la vista
Referencias,Créditos yLicencia
Licencia
Estas transparencias se publican bajo licencia CreativeCommons y se pueden redistribuir o modificar bajo lassiguientes condiciones:
Se dé reconocimiento al autor de estas transparencias.No se use con propósitos comerciales.Se distribuya con la misma licencia.
Texto de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/