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

Post on 20-Jan-2015

3.196 Views

Category:

Education

1 Downloads

Preview:

Click to see full reader

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

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