Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-03-2011 10:29:25

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Séparer le rendu du menu Zend_Navigation ZF 1.11[RESOLU]

Bonjour,
je bloque sur la creation d'un menu séparer en deux partie.
J'ai un menu Zend_Navigation avec 3 (ou plus) niveaux, que je shouterais avoir dans 2 div différentes, le niveau 1 séparé des autres niveaux qui seront affiché selon l'activité du niveau 1.

Actuellement :
navigation.xml

Code:

<accueil>
    <label>accueil</label>
    <controller>index</controller>
    <action>index</action>
    <pages>
        <lista>
            <label>listes</label>
            <controller>index</controller>
            <action>list</action>
            <pages>
                <essaie>
                    <label>essaie</label>                    
                    <controller>index</controller>
                    <action>list</action>                    
                    <params>
                        <test>essaie</test>
                    </params>
                </essaie>
                <final>
                    <label>final</label>                    
                    <controller>index</controller>
                    <action>list</action>                    
                    <params>
                        <test>final</test>
                    </params>
                </final>
            </pages>
        </lista>
    </pages>
</accueil>
<about>
    <label>about</label>
    <controller>about</controller>
    <action>index</action>
    <pages>
        <org>
            <label>organisation</label>
            <controller>about</controller>
            <action>index</action>
            <pages>
                <bur>
                    <label>bureau</label>
                    <controller>about</controller>
                    <action>bureau</action>
                </bur>
                <adh>
                    <label>adhérents</label>
                    <controller>about</controller>
                    <action>adherents</action>
                </adh>
            </pages>
        </org>
        <philo>
            <label>philosophie</label>
            <controller>about</controller>
            <action>philo</action>
            <pages>
                <prin>
                    <label>principal</label>
                    <controller>about</controller>
                    <action>principal</action>
                </prin>
                <avn>
                    <label>a venir</label>
                    <controller>about</controller>
                    <action>avenir</action>
                </avn>
            </pages>
        </philo>
    </pages>
</about>

Layout.phtml

Code:

<div class="navigation">
     <?=$this->navigation()->menu()->renderMenu(null, array('maxDepth'=>0));?>
</div>
<div class="subMenu">
     <?=$this->navigation()->menu()->renderMenu(null, array('minDepth'=>1,'maxDepth'=>1,'onlyActiveBranch'=>true));?>
</div>
<div class="subMenuLevels">
     <?=$this->navigation()->menu()->renderMenu(null, array('minDepth'=>2,'onlyActiveBranch'=>true)) ;?>
</div>

Objectif :

Code:

<div class="navigation">
     <?=$this->navigation()->menu()->renderMenu(null, array('maxDepth'=>0));?>
</div>
<div class="subMenu">
     <?=$this->navigation()->menu()->renderMenu(null, array('minDepth'=>1,'onlyActiveBranch'=>true));?>
</div>

Mais dans ce cas il n'affiche que la branche active prenant en compte le 3ème niveau, exemple :

Code:

// URL = /about
// Affiche au 2ème niveau :
<ul>
   <li>Organisation
      <ul>
         <li>Bureau</li>
         <li>Adhérents</li>
      </ul>
   </li>
</ul>
// Manque
<li>Philosophie
   <ul>
      <li>Principal</li>
      <li>A venir</li>
   </ul>
</li>

Hors je souhaiterais tenir compte de l'activité du niveau 1.
Idéalement j'aimerais pouvoir ajouter une class de niveau pour faciliter la création d'un drop down sous le niveau 2.

Merci d'avance,
Dede

Dernière modification par Dede (16-03-2011 08:25:23)


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#2 11-03-2011 15:17:47

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: Séparer le rendu du menu Zend_Navigation ZF 1.11[RESOLU]

avec onlyActiveBranch tu demande justement qu'on ne te lise que la branche active...

a mon avis avec les partial (si j'ai bien copris le truc) cela devrait aller : http://framework.zend.com/manual/fr/zen … ation.menu (exemple 44)


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#3 11-03-2011 18:18:24

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: Séparer le rendu du menu Zend_Navigation ZF 1.11[RESOLU]

Bonsoir,
Effectivement je ne demande que la branche active car si je ne fais pas cela, il me sort tous les liens du niveau 2 , Liste, Organisation et Philosophie hors j'aimerais n'avoir que Liste pour Accueil et les deux autres pour About.

Sinon j'ai effectivement fais des recherches du coté des partial mais je trouve que la doc est limitée.
je n'arrive pas à comprendre/appréhender toutes les possibilités de cette solution.


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

Hors ligne

 

#4 12-03-2011 22:14:52

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: Séparer le rendu du menu Zend_Navigation ZF 1.11[RESOLU]

perso je ne sais pas t'en fournir plus ... si tu trouve hésite pas a posté


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#5 15-03-2011 12:31:11

Dede
Membre
Date d'inscription: 26-06-2009
Messages: 99

Re: Séparer le rendu du menu Zend_Navigation ZF 1.11[RESOLU]

Bonjour,
Pour ceux que cela intéresse, je pense avoir une solution qui passe effectivement par un rendu partiel, ce n'est peut être pas la meilleur solution mais elle fonctionne.
Je me suis largement inspirer de ce tuto http://www.childofthemachine.com/blog/2 … us-part-1/

Ce qui donne dans le layout

Code:

// Premier niveau
<div id="navigation">
    <?=$this->navigation()->menu()->renderMenu(null, array('maxDepth'=>0));?>
</div>

// Autres niveau
<div id="subMenu">
    <?php $this->navigation()->menu()->setPartial(array( '/partialmenu.phtml','default'));?>
    <?=$this->navigation()->menu()->render();?>
</div>

Le partialmenu.phtml

Code:

echo '<ul class="subnav">';

foreach ($this->container as $page) {
    // Uniquement si le premier niveau est actif
    if($page->isActive(true)){

        foreach ($page as $page) {

            $liClass = $page->isActive(true) ? ' class="active"' : '';
            // Si il y a un sous menu
            if($page->hasPages()){
                // Ouvre la balise li
                echo '<li ' . $liClass . '>' . $this->menu()->htmlify($page), PHP_EOL;
                // Insert ul dropdown
                echo '<ul class="dropMenu">';
                foreach ($page as $page) {
                    $liClass = $page->isActive(false) ? ' class="active"' : '';
                    // Si lien visible
                    if($page->isVisible(false))
                        echo '<li ' . $liClass . '>' . $this->menu()->htmlify($page) .'</li>', PHP_EOL;
                }
                echo '</ul>';
                echo '</li>', PHP_EOL;
            }else{
                // Sinon on affiche simplement le lien
                echo '<li ' . $liClass . '>' . $this->menu()->htmlify($page) .'</li>', PHP_EOL;
            }
        }
    }
}
echo '</ul>';

Ensuite un peu de CSS et je javascript pour cacher le dropdown par default et l'afficher au survole.
Je pense qu'il est possible de l'améliorer pour qu'il accepte plus de niveau...


« Il ne faut pas lier un navire à une seule ancre, ni une vie à un seul espoir. »
Epictète
http://www.noumcreation.com

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