Bonjour à tous,
Je débute avec Zend Framework et j'adore !!!
Je teste en ce moment les composant et j'en suis arrivé à Zend_Navigation,
j'essais de créer un menu horizontal et cela fonctionne très bien. Maintenant j'aimerai ajouter un sous menu. voici comment je m'y prends :
d'abord j'utilise un fichier xml comme configuration du menu (navigation.xml)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
 
<?xml version="1.0" encoding="UTF-8"?><configdata>
<nav>
    <home>
        <label>Accueil</label>
        <controller>index</controller>
    </home>
    <reservation>
        <label> Reservation</label>
        <controller>reservation</controller>
        <action>index</action>
        <pages>
            <liste>
                <class>first</class>
                <label>Liste of reservation</label>
                <controller>reservation</controller>
                <action>listReservation</action>
            </liste>
            <creation>
                <label>Create Reservation</label>
                <controller>reservation</controller>
                <action>createReservation</action>
 
            </creation>
        </pages>
    </reservation>
    <books>
        <label> Books</label>
        <controller>books</controller>
        <action>index</action>
        <pages>
            <liste>
                <class>first</class>
                <label>Liste of Book</label>
                <controller>books</controller>
                <action>listBooks</action>
            </liste>
            <creation>
                <label>Create</label>
                <controller>books</controller>
                <action>createBooks</action>
 
            </creation>
        </pages>
    </books>
</nav>
</configdata>
Ensuite dans mon bootestrap (/application/bootstrap.php) je crée une resource method _initNavigation() pour initialiser la navigation pour le layout :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
protected function _initNavigation()	{
 
        $this->bootstrap('layout');
        $layout = $this->getResource('layout');
        $view = $layout->getView();
 
        $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml','nav');
        $navContainer = new Zend_Navigation($navContainerConfig);
 
        $view->navigation($navContainer);
}
Ensuite dans mon layout.phtml (application/layout/script/layout.phtml) je crée une balise <div> dans laquelle j'affiche mon menu :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
 
echo $this->navigation()->menu();
Sans sous menu ça fontionnel niquel ! mais avec sous menu c'est la C-A-T-A-S-T-R-O-P-H-E, il m'affiche tous les sous menu en dessous de chaque intitulé et en plus manière pas très propre ...
j'ai testé aussi ça à la place du code dans mon layout.phtml :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
echo $this->navigation()->menu()->renderMenu(null, array('maxDepth' => 0) );
 
 echo '<div class="sec-nav-wrap">';
 echo $this->navigation()->menu()->renderMenu(
    null,
    array(
        'ulClass'          => 'sec-navigation',
        'minDepth'         => 1,
        'onlyActiveBranch' => false,
        'renderParents'    => false
        )
    );
 echo '</div>';
Ce qui m'affiche de manière correcte le menu et le sous menu mais il m'affiche tous les intitulés dans les sous menu et dans n'importe quel controller ...

Est-ce que quelqu'un aurait une idée ?

Merci beaucoup d'avance =)