Surforce-base: primera versión con Zend_Layout

Hacer un rato actualicé el repositorio svn del proyecto surforce-base con la inclusión del manejo de "layout" (diseño) provista por Zend_Layout. Anteriormente teníamos que en cada vista de todos los módulos de nuestro sistema incluir indefectiblemente el código para el cabezal en la parte superior y el pié en la parte inferior.

Algo así:

1  
<?php echo $this->render('header.phtml'); ?>
2  <?php 
echo $this->render('menu.phtml'); ?>
3  

4  <div id="noticias">
5  
6     Hola, son el index de Noticias, 
7     si quieres ingresar al admin debes ir a 
8     <a href="<?php echo $this->baseUrl ?>
9  
      /noticias/admin/">Admin</a>
10  </div>
11  
12  <?php echo $this->render('footer.phtml'); ?>



De ahora en más, simplemente hay que poner el contenido de la vista sin los renders de "header" ni "footer".

El detalle más importante de todo esto es que en el modelo anterior, si tuviéramos que cambiar la estructura base del sitio -por ejemplo- cambiar de lugar el cabezal, el pie, o agregar un menú, o cambiarlo de lado, hay que modificar todas las vistas para hacerlo.

De esta nueva forma todo el esqueleto del sitio se encuentra en el layout.phtml, ubicado al mismo nivel que el código del cabezal y el pie (/html/scripts) y contendrá el siguiente código:


1  
<?php echo $this->render('header.phtml'); ?>
2  <?php 
echo $this->render('menu.phtml'); ?>
3  

4  <?php echo $this->layout()->content?>
5  

6  <?php echo $this->render('footer.phtml'); ?>



Y lo único que hubo que agregar fue en el bootstrap (index.php) algo como esto:

1  
<?php
2  
3  
/**
4   * Zend_Layout
5   */
6  
define('APP_PATH'realpath('.'));
7  
8  
Zend_Layout::startMvc(array(
9      
'layoutPath' => APP_PATH '/html/scripts'
10  
));
11  
12  
$view Zend_Layout::getMvcInstance()->getView();
13  
?> 
14  



Y listo, luego hay que sacar en todos los módulos las referencias al cabezal y pie para que este no se repita, ya que quedó definido en el "layout".

Más información en el proyecto en el cual pueden bajar sus fuentes y probarlo, y hasta ver las diferencias consultando el log del SVN.

Fuente: Introduction to Zend_Layout (updated for ZF 1.5!)

Actualización (24/04/2008):

4 comentarios:

dafevi dijo...

Pienso que al estar Zend Framework implementando un sistema de plantillas propio, Smarty caera en el olvido, por lo menos para los que pretendemos utilizar el Zend de ahora en mas.
Me gustaria escuchar tu opinion Enrique.
Saludos

Guumaster dijo...

La instancia $view que recoges solo la necesitas en el bootstrap si quieres cambiar algo, sino no haria falta, no?

Enrique Place dijo...

Estimado Daniel:

La verdad que en el esquema "Zend" tecnicamente y filosóficamente Smarty queda fuera del mismo.

La idea es que resuelvas todo a través de vistas, helpers y plugins, y con el tiempo (actualizan todos los días) tengas todos los elementos resueltos desde el framework (un helper "explota" en todo el código que necesitas).

Creo que el futuro será algo como tienen en el mundo Java o .Net, necesitas un componente, le pasas parámetros y luego se genera el código html ... no lo haces tú a mano.

Enrique Place dijo...

Estimado GusGus:

Si, solo ahí. No lo inventé yo, lo saqué tal cual de los artículos y así funciona sin problemas ;-)

PD: no te olvides que yo también estoy aprendiendo día a día ;-)

Entradas populares