desarrollo rápido con php y symfony (iii): la vista

38
Symfony David J. Brenes Martínez Layouts Configuración Helpers Parámetros Reutilización Partials Components Referencias, Créditos y Licencia Desarrollo rápido con PHP y Symfony (III) La Vista 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

3.195 views

Category:

Education


1 download

DESCRIPTION

Explicación del sistema de layouts de Symfony: sus ventajas, su configuración, los helpers y los componentes de reutilización de vistas

TRANSCRIPT

Page 1: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 2: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 3: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 4: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 5: Desarrollo rápido con PHP y Symfony (III): 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

Page 6: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 7: Desarrollo rápido con PHP y Symfony (III): La vista

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 >

Page 8: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 9: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 10: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 11: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 12: Desarrollo rápido con PHP y Symfony (III): 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

Page 13: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 14: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 15: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 16: Desarrollo rápido con PHP y Symfony (III): 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

Page 17: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 18: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 19: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 20: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 21: Desarrollo rápido con PHP y Symfony (III): 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->)

Page 22: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 23: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 24: Desarrollo rápido con PHP y Symfony (III): La vista

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?

Page 25: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 26: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 27: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 28: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 29: Desarrollo rápido con PHP y Symfony (III): 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

Page 30: Desarrollo rápido con PHP y Symfony (III): La vista

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?

Page 31: Desarrollo rápido con PHP y Symfony (III): La vista

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?

Page 32: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 33: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 34: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 35: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 36: Desarrollo rápido con PHP y Symfony (III): La vista

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

Page 37: Desarrollo rápido con PHP y Symfony (III): 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/

Page 38: Desarrollo rápido con PHP y Symfony (III): La vista

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/