2009-01-07 16 views
5

Qual è la procedura migliore per creare una barra laterale dinamica o altre posizioni di layout non di contenuto con zend framework. In questo momento ho creato controller strega che ho chiamato WidgetsController. In questo controller ho definito alcune azioni con il segmento di risposta 'sidebar' per la mia barra laterale e in IndexController li chiamo con $ this-> view-> action(); funzione ma non penso che sia una best practice per creare una barra laterale dinamica. Grazie per le vostre risposte.Procedura consigliata per creare una barra laterale dinamica con zend framework

risposta

8

È questione non fornisce molti dettagli. In generale, direi di caricare la barra laterale come modello di vista, tramite i metodi render/partial della vista. Quindi, da dentro una visione:

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

E poi barra laterale in grado di elaborare i dati dinamici:

//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> 

Se avete bisogno di funzionalità extra, si potrebbe creare un apposito view helper di gestirlo.

-4

Vorremmo qualche dettaglio in più, vale a dire che tipo di contenuto viene visualizzato nelle barre laterali, come li si mostra (vale a dire utilizzando un <ul>, <div> o altro), è il contenuto recuperato da un database, ecc

in CodeIgniter che utilizza anche il formato Model, View, Controller, si crea una vista chiamata 'sidebar.php' e nella vista Header, includiamo una chiamata a questa vista barra laterale, cioè:

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

la vista barra laterale contiene la logica per mostrare le voci del menu. Di solito si tratta di un menù statico, ma se fosse dinamica e doveva essere recuperato dal database, vorrei fare questo:

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

Fornire una risposta basata su CodeIgniter - o suggerire che il richiedente usi CodeIgniter - non contribuisce realmente a rispondere alla domanda come richiesto. –

-2

Sì, gente, la mia scommessa è che la risposta dal popolo di Igniter di codice è l'approccio corretto. In realtà è utile vedere come CI lo fa semplicemente, e per fare confronti. Fondamentalmente è lo stesso in ZF, tranne che invece della "vista nominata" ZF ha "Parziali".

ZF ha semplicemente disciplina più imposta, come layout + vista + partial e macchinari più interno per attuare questo, che in realtà non farla funzionare velocità dimezzata, che codeigniter sembra proprio essere appiattito tutto questo apparato in "viste nominate".

(non ho ancora fatto la mia mente sul fatto che ZF ha cucinato over-it o se alcune bistecche CI devono rimanere crudo nel mezzo.)

Se si utilizza $ navigazione-> setPartial (blah blah) quindi la matrice di leadup (tecnicamente questo tipo di dati costituisce la parte "modello" della cosa MVC) e viene reso disponibile al parziale.

Quindi ecco fatto, l'idea sembra essere non trascinare gli aspetti del display del modello nel controller, spingere il materiale del display del modello verso i macchinari per la visualizzazione delle immagini.

io sono in procinto di avere un andare a questo me stesso, ho fatto fare una ricerca su parziali nella sezione vista aiutanti del Manuale Zend per trovare questo, anche se gli esempi sono un po 'sottile.

augurarmi fortuna Keith

Problemi correlati