2009-01-07 19 views
5

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

Respuesta

8

Usted cuestión no ofrece 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. Así que 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 entonces la barra lateral podría procesar esos datos 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 una funcionalidad adicional, se podría crear un dedicado view helper para manejarlo.

-4

Nos gustaría algunos detalles más, es decir, qué tipo de contenido se muestra en las barras laterales, cómo se les muestra (es decir, utilizando un <ul>, <div> o algo más), es el contenido recuperado de una base de datos, etc.

en CodeIgniter que también utiliza el formato Model, View, Controller, se crea una vista denominada 'sidebar.php' y en la vista Header, incluimos una llamada a este punto de vista la barra lateral, es decir:

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

la vista barra lateral contiene la lógica para mostrar los elementos del menú. Por lo general, se trata de un menú estático, pero si era dinámico y tuvo que ser traída desde la base de datos, que podría hacer esto:

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

Proporcionar una respuesta basada en CodeIgniter - o sugerir que el usuario use CodeIgniter - realmente no contribuye a responder la pregunta como se le pidió. –

-2

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

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

(que aún no han tomado una decisión en cuanto a si ha cocinado sobre ZF-o sea unos filetes de CI tienen que permanecer crudo en el centro.)

Si utiliza $ navegación-> 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 tienen, la idea parece ser no tire de los aspectos de presentación del modelo en el controlador, empujar el material exhibición modelo a la maquinaria de procesamiento de la vista.

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

Deséame suerte Keith

Cuestiones relacionadas