Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
Nouveau sur le forum et assez nouveau sur ZF, je vous remercie par avance de vos réponses.
Je cherche à créer un menu où seule la branche active serait développée, mais où tous les parents resteraient affichés.
J'ai un XML de config, à priori bien fait, j'initialise la navigation dans mon bootstrap :
protected function _initMenu ( ) { $cache = Zend_Registry :: getInstance ( ) -> get ( 'cacheMenu' ) ; if ( ! $config = $cache -> load ( 'navigation' ) ) { $config = new Zend_Config_Xml ( APPLICATION_PATH . '/configs/menu.xml', 'menu' ) ; $cache -> save ( $config, 'navigation' ) ; } $navigation = new Zend_Navigation ( $config ) ; $this -> bootstrap ( 'layout' ) ; $layout = $this -> getResource ( 'layout' ) ; $view = $layout -> getView ( ) ; $view -> navigation ( $navigation ) ; }
Puis dans le layout :
<?= $this -> navigation ( ) -> menu ( ) -> setMaxDepth ( 1 ) ; ?>
Donc là j'ai tout le menu, en s'arrêtant au premiers enfants (c'est le but).
Le truc c'est que lorsque je rajoute :
<?= $this -> navigation ( ) -> menu ( ) -> setMaxDepth ( 1 )->setOnlyActiveBranch(true) ; ?>
Je n'ai plus les parents des branches non-actives.
Avez-vous une idée ?
Merci,
Franck.
Dernière modification par web82 (22-09-2009 19:00:46)
Hors ligne
Il me semble qu'il y a un bug qui a été corrigé dans 1.9 :
http://framework.zend.com/manual/fr/zen … ion.zf7341
Hors ligne
Merci beaucoup, mais je ne pense pas que ça soit lié.
Grosso modo, j'ai un menu qui, complet, donne ça :
parent 1 enfant 1 de parent 1 enfant 2 de parent 1 parent 2 enfant 1 de parent 2 enfant 2 de parent 2 parent 3 enfant 1 de parent 3 enfant 2 de parent 3
Et donc, le but est que quand je suis sur la page par exemple "enfant 1 de parent 1", ne s'affiche que :
parent 1 enfant 1 de parent 1 enfant 2 de parent 1 parent 2 parent 3
Savez vous si dans l'état actuel du Framework, c'est possible ?
Merci,
Franck.
Hors ligne
Oui, je le fais, j'ai exactement la meme structure
D'ailleurs, hier, j'ai justement rajouté des enfant 1/2 à parent 1, et bizarrement, avec le 1.8 ca ne fonctionnait pas, j'ai installé le 1.9, ca à fonctionné.
D'ailleurs, moi, c'est encore plus compliqué que ca, car j'affiche d'abord juste les parents, et à un autre endroit juste les fils du parents coché :
<div class="navcontainer"> <?= $this->navigation()->menu()->setIndent(4)->setMaxDepth(0);?> </div> <!-- navcontainer --> <div class="subnavcontainer"> <?= $this->navigation()->menu()->setIndent(4)->setMinDepth(1)->setRenderParents(false)->setOnlyActiveBranch(true);?> </div>
Avant le 1.9, ce code ne fonctionnait pas. (je n'avais pas les enfants)
Dernière modification par nORKy (23-09-2009 14:35:04)
Hors ligne
Merci nORKy.
Alors ce qui est étrange, c'est que quand je fais comme toi, c'est à dire placer les enfants hors des parents, et avec 1.8, ça fonctionne. En conservant tous les parents. Avec :
<?= $this -> navigation ( ) -> menu ( ) -> setMaxDepth ( 0 ) ; ?> <?= $this -> navigation ( ) -> menu ( ) -> setOnlyActiveBranch ( TRUE ) -> setRenderParents ( FALSE ) ; ?>
Je ne collais pas de setMinDepth, faut dire, pour les enfants. Ceci explique peut-être cela.
Le truc c'est justement que ça a l'air moins simple en affichant les enfants de la branche active SOUS leurs parents. Donc en un seul appel à $this -> navigation ( ).
De plus, niveau 1.9, étant sous Linux Debian, je marche avec les dépôts Zend, et c'est encore la 1.8. Si je sors de ça pour installer "manuellement" la 1.9, je perd le bénéfice des mises à jour automatiques.
Hors ligne
Pages: 1