desarrollo rápido con php y symfony (ii): el controlador

28
Symfony David J. Brenes Martínez Decidiendo qué ejecutar Ejecutando acciones Parámetros Comunicación con el modelo y la vista Referencias, Créditos y Licencia Desarrollo rápido con PHP y Symfony (II) El Controlador David J. Brenes Martínez Curso de Extensión Universitaria Desarrollo web avanzado Universidad de Oviedo 2010/03/22

Upload: david-j-brenes

Post on 20-Jan-2015

1.078 views

Category:

Education


7 download

DESCRIPTION

Explicación del papel del controlador en Symfony, el sistema de acciones, su comunicación con la vista y el modelo y la recogida de parámetros

TRANSCRIPT

Page 1: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 2: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 3: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 4: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 5: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 6: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 7: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 8: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 9: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 10: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 11: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 12: Desarrollo rápido con PHP y Symfony (II): El controlador

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 ( )

Page 13: Desarrollo rápido con PHP y Symfony (II): El controlador

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 ( )

Page 14: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 15: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 16: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 17: Desarrollo rápido con PHP y Symfony (II): El controlador

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 ( )

Page 18: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 19: Desarrollo rápido con PHP y Symfony (II): El controlador

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 ( )

Page 20: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 21: Desarrollo rápido con PHP y Symfony (II): El controlador

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.

Page 22: Desarrollo rápido con PHP y Symfony (II): El controlador

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 ;

Page 23: Desarrollo rápido con PHP y Symfony (II): El controlador

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?

Page 24: Desarrollo rápido con PHP y Symfony (II): El controlador

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

Page 25: Desarrollo rápido con PHP y Symfony (II): El controlador

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 " ;

Page 26: Desarrollo rápido con PHP y Symfony (II): El controlador

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/

Page 27: Desarrollo rápido con PHP y Symfony (II): El controlador

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.

Page 28: Desarrollo rápido con PHP y Symfony (II): El controlador

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/