zend tutorial studio para framework php zend-framework

php - tutorial - Práctica recomendada para crear una barra lateral dinámica con Zend Framework



zend server (4)

Nos gustaría obtener más detalles, es decir, qué tipo de contenido se muestra en las barras laterales, cómo se muestran (es decir, utilizando un <ul> , <div> u otra cosa), se recupera el contenido de una base de datos, etc.

En CodeIgniter que también utiliza el formato Model, View, Controller , creamos una vista llamada ''sidebar.php'' y en la vista Header , incluimos una llamada a esta vista de la barra lateral, es decir:

<html> <head>.......</head> <div id="header">....</div> <?php $this->load->view(''sidebar'');?>

La vista de la barra lateral contiene la lógica para mostrar los elementos del menú. Usualmente es un menú estático, pero si fuera dinámico y tuviera que ser extraído de la base de datos, haría esto:

<ul> <?php $items=$this->some_model->getMenuItems(); foreach ($items as $item): ?> <li><a href="<?=$item[''url''];?>"><?=$item[''text''];?></li> <?php endforeach;?> </ul>

¿Cuál es la mejor práctica para crear una barra lateral dinámica u otros lugares de diseño sin contenido con Zend Framework. En este momento creé el controlador que llamé WidgetsController. En este controlador, definí algunas acciones con un segmento de respuesta ''barra lateral'' para mi barra lateral y en IndexController las llamo con $ this-> view-> action (); función, pero no creo que sea una mejor práctica para crear una barra lateral dinámica. Gracias por tus respuestas.


Tu pregunta no proporciona muchos detalles. En general, diría que carga la barra lateral como una plantilla de vista, a través de los métodos render / partial de la vista. Entonces desde el interior de una vista:

//$data is dynamic data you want to pass to the sidebar echo $this -> partial(''/path/to/sidebar.phtml'',array(''menuitems'' => $data));

Y luego la barra lateral podría procesar esa información dinámica:

//sidebar.phtml <div id="sidebar"> <?php foreach($this -> menuitems as $item) : ?> <a href="<?php echo $item[''url'']; ?>"><?php echo $item[''title'']; ?></a> <?php endforeach; ?> </div>

Si necesita funcionalidad adicional, puede crear un asistente de visualización dedicado para manejarlo.


Sí, amigos, mi apuesta es que la respuesta de la gente de Code Igniter es el enfoque correcto. En realidad, es útil ver cómo CI simplemente lo hace y hacer comparaciones. Es básicamente lo mismo en ZF, excepto que en lugar de la "vista con nombre" ZF tiene "Parciales".

ZF simplemente tiene más disciplina impuesta, como diseños + vistas + parciales, y más maquinaria interna para implementar esto, lo que hace que funcione la mitad de rápido, mientras que el encendedor de código simplemente parece haber aplanado todo este aparato en "vistas nombradas".

(Todavía no me he decidido si ZF lo ha cocinado demasiado o si algunos bistecs CI deben permanecer crudos en el medio).

Si usa $ navigation-> setPartial (blah blah), entonces la matriz de introducción (técnicamente este tipo de datos constituye la parte "modelo" de la cosa MVC) y está disponible para el parcial.

Así que ahí lo tienes, la idea parece ser no llevar los aspectos de visualización del modelo al controlador, empujar la visualización del modelo hacia la maquinaria de procesamiento de visualización.

Estoy a punto de intentarlo yo mismo, hice una búsqueda de parciales en la sección de ver ayuda del Manual de Zend para encontrar esto, aunque los ejemplos son un poco delgados.

Desearme suerte Keith