Este documento proporciona una introducción a las vistas en Symfony. Explica conceptos como layouts, slots, partials y components, que permiten la reutilización de código y mejoran la legibilidad y mantenibilidad de las vistas. También cubre temas como la configuración de vistas, el acceso a helpers y parámetros, y cuando es apropiado utilizar elementos como partials frente a components.
1. Symfony
David J.
Brenes
Martínez
Desarrollo rápido con PHP y Symfony Layouts
(III) La Vista Configuración
Helpers
Parámetros
Reutilización
David J. Brenes Martínez Partials
Components
Referencias,
Curso de Extensión Universitaria Créditos y
Desarrollo web avanzado Licencia
Universidad de Oviedo
2010/03/22
2. Sin un sistema de plantillas
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Dentro del PHP concreto de la vista se usaban includes
Helpers
Los elementos comunes se definían en ficheros Parámetros
exernos Reutilización
Partials
La inclusión de los elementos se hace en la vista Components
concreta Referencias,
Créditos y
Licencia
3. Estructura de una vista old school
Symfony
David J.
Brenes
Martínez
Layouts
include ( " header . php " ) ; Configuración
Helpers
/ / Todo e l c o n t e n i d o de l a v i s t a Parámetros
// ... Reutilización
Partials
Components
include ( " s i d e b a r . php " ) Referencias,
Créditos y
Licencia
include ( " f o o t e r . php " )
4. Con un sistema de plantillas
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
En el PHP concreto de la vista no se incluyen Helpers
elementos globales Parámetros
La vista concreta no sabe nada de dónde está incluida Reutilización
Partials
Es la plantlla la que incluye a la vista Components
Referencias,
Créditos y
Licencia
5. Vista de una acción
Symfony
David J.
Brenes
Martínez
Es la vista que el controlador decide que se muestre Layouts
Configuración
Fichero PHP simple
Helpers
Hace uso de los parámetros almacenados por el Parámetros
controlador Reutilización
Partials
Sólo debe preocuparse de la vista (sin lógica de Components
Referencias,
negocio) Créditos y
Licencia
Se situan en la carpeta templates del módulo
6. Layout
Symfony
David J.
Brenes
Martínez
Define los elementos comunes: Menús, cabecera, Layouts
pie. . . Configuración
No recibe parámetros del controlador Helpers
Parámetros
Hace uso de datos de la respuesta (javascripts, título
Reutilización
de la página, etiquetas meta. . . ) Partials
Components
Sólo debe preocuparse de la vista (sin lógica de Referencias,
Créditos y
negocio) Licencia
Se situan en la carpeta templates de la aplicación
7. Layout de ejemplo
Symfony
David J.
Brenes
Martínez
<html > Layouts
<head> Configuración
<?php include_metas ( ) ?> Helpers
<?php i n c l u d e _ t i t l e ( ) ?> Parámetros
<?php i n c l u d e _ s t y l e s h e e t s ( ) ?> Reutilización
Partials
</ head> Components
<body> Referencias,
Créditos y
<?php echo $ s f _ c o n t e n t ?> Licencia
</ body>
</ html >
8. Slots
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
En ocasiones la vista debe introducir elementos en el layout Helpers
Parámetros
Submenús
Reutilización
Sidebar contextuales Partials
Components
Referencias,
Créditos y
Licencia
9. Slots
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Zonas del layout donde podemos introducir contenido Helpers
Se declaran en el layout Parámetros
Reutilización
En la vista se indica que parte el contenido va a parar a Partials
Components
un slot
Referencias,
Créditos y
Licencia
10. Ejemplo de slots
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
<?php i f ( ! i n c l u d e _ s l o t ( ’ s i d e b a r ’ ) ) : ?> Helpers
<!−− código por d e f e c t o −−> Parámetros
<?php e n d i f ; ?> Reutilización
Partials
Components
Referencias,
Créditos y
En el layout Licencia
11. Ejemplo de slots
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
<?php s l o t ( ’ s i d e b a r ’ ) ?> Helpers
<!−− Código d e l s i d e b a r para e s t a v i s t a −−> Parámetros
<?php e n d _ s l o t ( ) ?> Reutilización
Partials
Components
Referencias,
Créditos y
En la vista Licencia
12. View.yml
Symfony
David J.
Brenes
Martínez
Layouts
Fichero de configuración de las vistas
Configuración
En la configuración de la aplicación define aspectos Helpers
comunes a toda la aplicación Parámetros
En la configuración del módulo nos define aspectos del Reutilización
Partials
módulo o de una vista Components
Referencias,
La configuración del módulo o vista puede Créditos y
Licencia
sobreescribir los niveles anteriores
13. View.yml
Symfony
David J.
Brenes
Martínez
Configuramos: Layouts
Configuración
El layout que debe tener una vista
Helpers
Las hojas de estilo Parámetros
Los javascripts a incluir Reutilización
Partials
Metas y HTTP Metas, aunque está desaconsejado Components
Referencias,
Créditos y
Referencia: http://www.symfony-project.org/ Licencia
reference/1_4/en/13-View
14. Configuración en tiempo de ejecución
Symfony
David J.
Brenes
Martínez
Layouts
Puede interesar cambiar el título de la web en tiempo Configuración
de ejecución Helpers
Se dispone de un objeto Response desde el que Parámetros
modificar la respuesta Reutilización
Partials
Components
En el controlador $this->getResponse()
Referencias,
Desde la vista $sf_response Créditos y
Licencia
15. Funciones complejas
Symfony
David J.
Brenes
Martínez
Layouts
En ocasiones las vistas tienen comportamientos Configuración
complejos Helpers
Parámetros
Esos comportamientos se repiten en otras vistas Reutilización
Las vistas crecen y se hacen menos legibles Partials
Components
Necesidad de declarar ese código fuera de la vista Referencias,
Créditos y
Licencia
16. Helpers
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Ficheros con funciones (no necesariamente clases) Helpers
Parámetros
Se declara su uso y las funciones estan disponibles
Reutilización
Normalmente son funciones muy abstractas Partials
Components
Referencias,
Créditos y
Licencia
17. Declaración de Helpers
Symfony
David J.
Brenes
Martínez
Layouts
En la vista: funcion use_helper
Configuración
En el controlador o el modelo: Helpers
sfApplicationConfiguration::getActive()->loadHelpers Parámetros
En la configuración (settings.yml), añadiendolo a Reutilización
Partials
standard_helpers Components
Referencias,
Si los helpers se cargan siempre, incluirlo en la Créditos y
Licencia
configuración
18. Creación de Helpers
Symfony
David J.
Brenes
Martínez
Layouts
Las funciones van en un fichero Configuración
Helpers
nombre_del_helper+Helper.php
Parámetros
El fichero debe situarse en lib/helpers Reutilización
Partials
Al declarar su uso debe hacerse referencia a Components
nombre_del_helper, no a nombre_del_helper+Helper Referencias,
Créditos y
Licencia
19. Ejemplo de Helper
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
f u n c t i o n f o r m a t ( $param )
Helpers
{ Parámetros
// ... Reutilización
} Partials
Components
Referencias,
Créditos y
Licencia
/lib/helpers/CustomHelper.php
20. Ejemplo de Helper
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
use_helper ( array ( " Custom " ) ) ; Helpers
Parámetros
echo f o r m a t ( $param ) ; Reutilización
Partials
Components
Referencias,
Créditos y
En la Vista Licencia
21. Del controlador
Symfony
David J.
Brenes
Martínez
Layouts
Lo ideal sería que todos los parámetros vinieran del Configuración
controlador Helpers
Son variables PHP con el mismo nombre que les diera Parámetros
Reutilización
el controlador Partials
Components
NO son variables de objeto (no deben accederse con Referencias,
$this->) Créditos y
Licencia
22. Acceso a la request
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Helpers
Se tiene el objeto $sf_request
Parámetros
Es el mismo objeto que el $this->getRequest() del Reutilización
controlador Partials
Components
Referencias,
Créditos y
Licencia
23. Acceso a la sesión
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Helpers
Se tiene el objeto $sf_user
Parámetros
Es el mismo objeto que el $this->getUser() del Reutilización
controlador Partials
Components
Referencias,
Créditos y
Licencia
24. Cuando el layout no es suficiente
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Helpers
El layout define los elementos comunes: Menús, cabecera, Parámetros
pie. . . Reutilización
Partials
¿Seguro? Components
Referencias,
Créditos y
Licencia
25. Cuando el layout no es suficiente
Symfony
David J.
Brenes
Martínez
Layouts
Las layouts crecen si hay muchos elementos comunes Configuración
Helpers
(menú, migas de pan, sidebars, banners, footers. . . )
Parámetros
Puede haber elementos comunes a las layouts Reutilización
Partials
Puede haber elementos complejos que ensucien Components
nuestro layout Referencias,
Créditos y
Licencia
26. Reutilización de vistas
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Elementos de reutilización: Helpers
Parámetros
Partials
Reutilización
Components Partials
Components
Referencias,
Créditos y
Licencia
27. Partials
Symfony
David J.
Brenes
Martínez
Layouts
Vistas reutilizables en otras vistas Configuración
Tienen acceso a helpers, la request, el usuario, etc. Helpers
Parámetros
No tienen acceso a las variables comunicadas por el
Reutilización
controlador Partials
Components
Pueden recibir parametros de la vista Referencias,
Créditos y
Pueden incluir otros partials y components Licencia
28. Ejemplo de Partial
Symfony
David J.
i n c l u d e _ p a r t i a l ( " nombre_partial " ) ; Brenes
Martínez
i n c l u d e _ p a r t i a l ( " modulo / n o m b r e _ p a r t i a l " ) ;
Layouts
i n c l u d e _ p a r t i a l ( " global / nombre_partial " ) ;
Configuración
Helpers
echo g e t _ p a r t i a l ( " n o m b r e _ p a r t i a l " ) ;
Parámetros
Reutilización
i n c l u d e _ p a r t i a l ( " nombre_partial " , Partials
Components
array ( Referencias,
" param1 " => $valor_param_1 , Créditos y
Licencia
" param2 " => $valor_param_2
)
);
En la Vista
29. Ejemplo de Partial
Symfony
David J.
Brenes
Martínez
Layouts
echo $param1 ; Configuración
Helpers
Parámetros
echo $param2 ;
Reutilización
Partials
i n c l u d e _ p a r t i a l ( " nombre_otro_partial " ) ; Components
Referencias,
Créditos y
Licencia
En el partial _nombre_partial.php
30. Cuando los partials no sirven
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Helpers
En nuestra sidebar hay una zona de últimas noticias. Parámetros
Reutilización
¿Cómo lo implementamos? Partials
Components
Referencias,
Créditos y
Licencia
31. Cuando los partials no sirven
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Helpers
¿Obteniendo las últimas noticias en un partial?
Parámetros
¿Obteniendo las últimas noticias en todos los Reutilización
controladores? Partials
Components
Referencias,
Créditos y
Licencia
32. Components
Symfony
David J.
Brenes
Martínez
Layouts
En ocasiones interesa reutilizar controladores Configuración
Helpers
Noticias más leidas, recomendaciones al usuario, etc.
Parámetros
En otras plataformas se encadenan acciones Reutilización
Partials
La vista puede solicitar al controlador nuevos Components
comportamientos Referencias,
Créditos y
Licencia
33. Components
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Son parecidos a las acciones del controlador Helpers
Parámetros
Aportan a los partials la capacidad de acceder al Reutilización
modelo y llevar a cabo reglas de negocio Partials
Components
Referencias,
Créditos y
Licencia
34. Ficheros de components
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Para un componente se generan dos ficheros
Helpers
En actions: components.class.php o Parámetros
nombre_componenteComponent.class.php Reutilización
Partials
En templates: _nombre_componente.php Components
Referencias,
Créditos y
Licencia
35. Diferencias con las acciones
Symfony
David J.
Brenes
Martínez
Layouts
Configuración
Un componente no tiene plantillas de error Helpers
Parámetros
No pueden ser accedidos directamente desde URL
Reutilización
Solo se pueden invocar desde vistas Partials
Components
Referencias,
Créditos y
Licencia
36. Ejemplo de Component
Symfony
David J.
Brenes
Martínez
include_component ( " modulo " , " nombre_component " )Layouts
;
Configuración
include_component ( " modulo " , " nombre_component " , Helpers
array ( Parámetros
" param1 " => $valor_param_1 , Reutilización
Partials
" param2 " => $valor_param_2 Components
Referencias,
) Créditos y
Licencia
);
En la Vista
37. Referencias
Symfony
David J.
Brenes
Martínez
Symfony Project: www.symfony-project.org Layouts
The Symfony Reference Book: http://www. Configuración
Helpers
symfony-project.org/reference/1_4/en/
Parámetros
Practical Symfony: Reutilización
http://www.symfony-project.org/jobeet/1_ Partials
Components
4/Doctrine/en/ Referencias,
Créditos y
The Definitive Guide to Symfony: Licencia
http://www.symfony-project.org/book/1_2/
38. Licencia
Symfony
David J.
Brenes
Martínez
Estas transparencias se publican bajo licencia Creative Layouts
Commons y se pueden redistribuir o modificar bajo las Configuración
siguientes condiciones: Helpers
Se dé reconocimiento al autor de estas transparencias. Parámetros
Reutilización
No se use con propósitos comerciales. Partials
Components
Se distribuya con la misma licencia. Referencias,
Créditos y
Texto de la licencia: http: Licencia
//creativecommons.org/licenses/by-nc-sa/3.0/