Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-09-2009 18:58:59

web82
Nouveau membre
Date d'inscription: 16-09-2009
Messages: 3

[Zend_Navigation][1.8] setOnlyActiveBranch en gardant les parents

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 :

Code:

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 :

Code:

<?= $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 :

Code:

<?= $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

 

#2 23-09-2009 07:53:29

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Navigation][1.8] setOnlyActiveBranch en gardant les parents

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


----
Gruiiik !

Hors ligne

 

#3 23-09-2009 09:53:10

web82
Nouveau membre
Date d'inscription: 16-09-2009
Messages: 3

Re: [Zend_Navigation][1.8] setOnlyActiveBranch en gardant les parents

Merci beaucoup, mais je ne pense pas que ça soit lié.

Grosso modo, j'ai un menu qui, complet, donne ça :

Code:

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 :

Code:

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

 

#4 23-09-2009 14:34:40

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Navigation][1.8] setOnlyActiveBranch en gardant les parents

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é :

Code:

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


----
Gruiiik !

Hors ligne

 

#5 23-09-2009 15:05:38

web82
Nouveau membre
Date d'inscription: 16-09-2009
Messages: 3

Re: [Zend_Navigation][1.8] setOnlyActiveBranch en gardant les parents

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 :

Code:

<?= $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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages