2010-09-02 22 views
1

J'utilise Zend_Layout pour la mise en page de mon application Zend Framework. C'est très simple, mais j'ai encore quelques opérations à faire dans la mise en page. Pour l'instant, le code est inclus entre les parenthèses PHP, mais je pense que ce n'est pas vraiment le moyen le plus propre.Où mettre le code requis par la mise en page dans Zend Framework?

J'ai vu des gens utiliser des plugins, mais je ne pense pas que c'est ce que je veux faire. Évidemment, j'ai pu extraire la partie «compliquée», le faire d'une manière gentille d'action/contrôleur, et utiliser un espace réservé dans la disposition. Est-ce le chemin à parcourir? Avez-vous des exemples de telles choses (par exemple le menu de navigation délégué dans sa propre action)?

Répondre

1

Comme cela a été dit, l'espace réservé de navigation() est probablement le chemin à parcourir. Cependant, je ne voulais pas passer par la configuration de Zend_Navigation pour ce cas particulier, donc j'ai utilisé un custom view helper.

application/views/helpers/Menu.php:

<?php 

class Zend_View_Helper_Menu extends Zend_View_Helper_Abstract { 

    public function menu() { 
     // my code ... 
     $this->view->menu = $menu; 

     return $this->view->render('helpers/menu.phtml'); 
    } 

} 

application/views/scripts/helpers/menu.phtml:

<ul> 
    <?php foreach ($this->menu as $item) { // print menu } ?> 
</ul> 

De cette façon, je peux simplement appeler cette aide de ma mise en page:

... 
<div id="menu"> 
    <?php echo $this->menu(); ?> 
</div> 
... 
3

navigation() est une implémentation concrète de l'assistant de vue espace réservé.

Vous pouvez créer la même implémentation de l'espace réservé, ou utiliser

  • comprennent ('myhtml.phtml');
  • $this->render('script.phtml');
  • partials
  • partialLoops
  • espaces réservés
  • aides de vue

Cela dépend de ce que vous cherchez. Action pile est mauvaise, comme vous l'avez probablement déjà entendu.