Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Desarrollo rápido con PHP y Symfony(III) La Vista
David J. Brenes Martínez
Curso de Extensión UniversitariaDesarrollo web avanzado
Universidad de Oviedo
2010/03/22
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Sin un sistema de plantillas
Dentro del PHP concreto de la vista se usaban includesLos elementos comunes se definían en ficherosexernosLa inclusión de los elementos se hace en la vistaconcreta
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Estructura de una vista old school
include ( " header . php " ) ;
/ / Todo e l contenido de l a v i s t a/ / . . .
include ( " s idebar . php " )
include ( " f o o t e r . php " )
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Con un sistema de plantillas
En el PHP concreto de la vista no se incluyenelementos globalesLa vista concreta no sabe nada de dónde está incluidaEs la plantlla la que incluye a la vista
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Vista de una acción
Es la vista que el controlador decide que se muestreFichero PHP simpleHace uso de los parámetros almacenados por elcontroladorSólo debe preocuparse de la vista (sin lógica denegocio)Se situan en la carpeta templates del módulo
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Layout
Define los elementos comunes: Menús, cabecera,pie. . .No recibe parámetros del controladorHace uso de datos de la respuesta (javascripts, títulode la página, etiquetas meta. . . )Sólo debe preocuparse de la vista (sin lógica denegocio)Se situan en la carpeta templates de la aplicación
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Layout de ejemplo
<html ><head>
<?php include_metas ( ) ?><?php i n c l u d e _ t i t l e ( ) ?><?php inc lude_s ty l eshee ts ( ) ?>
</head><body>
<?php echo $sf_content ?></body>
</ html >
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Slots
En ocasiones la vista debe introducir elementos en el layout
SubmenúsSidebar contextuales
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Slots
Zonas del layout donde podemos introducir contenidoSe declaran en el layoutEn la vista se indica que parte el contenido va a parar aun slot
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Ejemplo de slots
<?php i f ( ! i n c l u d e _ s l o t ( ’ s idebar ’ ) ) : ?><!−− código por defecto −−>
<?php end i f ; ?>
En el layout
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Ejemplo de slots
<?php s l o t ( ’ s idebar ’ ) ?><!−− Código de l s idebar para esta v i s t a −−>
<?php end_s lo t ( ) ?>
En la vista
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
View.yml
Fichero de configuración de las vistasEn la configuración de la aplicación define aspectoscomunes a toda la aplicaciónEn la configuración del módulo nos define aspectos delmódulo o de una vistaLa configuración del módulo o vista puedesobreescribir los niveles anteriores
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
View.yml
Configuramos:
El layout que debe tener una vistaLas hojas de estiloLos javascripts a incluirMetas y HTTP Metas, aunque está desaconsejado
Referencia: http://www.symfony-project.org/reference/1_4/en/13-View
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Configuración en tiempo de ejecución
Puede interesar cambiar el título de la web en tiempode ejecuciónSe dispone de un objeto Response desde el quemodificar la respuestaEn el controlador $this->getResponse()Desde la vista $sf_response
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Funciones complejas
En ocasiones las vistas tienen comportamientoscomplejosEsos comportamientos se repiten en otras vistasLas vistas crecen y se hacen menos legiblesNecesidad de declarar ese código fuera de la vista
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Helpers
Ficheros con funciones (no necesariamente clases)Se declara su uso y las funciones estan disponiblesNormalmente son funciones muy abstractas
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Declaración de Helpers
En la vista: funcion use_helperEn el controlador o el modelo:sfApplicationConfiguration::getActive()->loadHelpersEn la configuración (settings.yml), añadiendolo astandard_helpersSi los helpers se cargan siempre, incluirlo en laconfiguración
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Creación de Helpers
Las funciones van en un ficheronombre_del_helper+Helper.phpEl fichero debe situarse en lib/helpersAl declarar su uso debe hacerse referencia anombre_del_helper, no a nombre_del_helper+Helper
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Ejemplo de Helper
f u n c t i o n format ( $param ){/ / . . .}
/lib/helpers/CustomHelper.php
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Ejemplo de Helper
use_helper ( array ( " Custom " ) ) ;
echo format ( $param ) ;
En la Vista
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Del controlador
Lo ideal sería que todos los parámetros vinieran delcontroladorSon variables PHP con el mismo nombre que les dierael controladorNO son variables de objeto (no deben accederse con$this->)
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Acceso a la request
Se tiene el objeto $sf_requestEs el mismo objeto que el $this->getRequest() delcontrolador
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Acceso a la sesión
Se tiene el objeto $sf_userEs el mismo objeto que el $this->getUser() delcontrolador
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Cuando el layout no es suficiente
El layout define los elementos comunes: Menús, cabecera,pie. . .
¿Seguro?
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Cuando el layout no es suficiente
Las layouts crecen si hay muchos elementos comunes(menú, migas de pan, sidebars, banners, footers. . . )Puede haber elementos comunes a las layoutsPuede haber elementos complejos que ensuciennuestro layout
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Reutilización de vistas
Elementos de reutilización:
PartialsComponents
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Partials
Vistas reutilizables en otras vistasTienen acceso a helpers, la request, el usuario, etc.No tienen acceso a las variables comunicadas por elcontroladorPueden recibir parametros de la vistaPueden incluir otros partials y components
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Ejemplo de Partial
i n c l u d e _ p a r t i a l ( " nombre_par t ia l " ) ;i n c l u d e _ p a r t i a l ( " modulo / nombre_par t ia l " ) ;i n c l u d e _ p a r t i a l ( " g loba l / nombre_par t ia l " ) ;
echo g e t _ p a r t i a l ( " nombre_par t ia l " ) ;
i n c l u d e _ p a r t i a l ( " nombre_par t ia l " ,array (" param1 " => \ $valor_param_1 ," param2 " => \ $valor_param_2)) ;
En la Vista
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Ejemplo de Partial
echo $param1 ;
echo $param2 ;
i n c l u d e _ p a r t i a l ( " nombre_ot ro_par t ia l " ) ;
En el partial _nombre_partial.php
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Cuando los partials no sirven
En nuestra sidebar hay una zona de últimas noticias.¿Cómo lo implementamos?
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Cuando los partials no sirven
¿Obteniendo las últimas noticias en un partial?¿Obteniendo las últimas noticias en todos loscontroladores?
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Components
En ocasiones interesa reutilizar controladoresNoticias más leidas, recomendaciones al usuario, etc.En otras plataformas se encadenan accionesLa vista puede solicitar al controlador nuevoscomportamientos
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Components
Son parecidos a las acciones del controladorAportan a los partials la capacidad de acceder almodelo y llevar a cabo reglas de negocio
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Ficheros de components
Para un componente se generan dos ficheros
En actions: components.class.php onombre_componenteComponent.class.phpEn templates: _nombre_componente.php
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Diferencias con las acciones
Un componente no tiene plantillas de errorNo pueden ser accedidos directamente desde URLSolo se pueden invocar desde vistas
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
Referencias,Créditos yLicencia
Ejemplo de Component
include_component ( " modulo " , " nombre_component " ) ;
include_component ( " modulo " , " nombre_component " ,array (" param1 " => \ $valor_param_1 ," param2 " => \ $valor_param_2)) ;
En la Vista
Symfony
David J.Brenes
Martínez
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
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
Layouts
Configuración
Helpers
Parámetros
ReutilizaciónPartials
Components
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/
Top Related