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)
Ensuite dans mon bootestrap (/application/bootstrap.php) je crée une resource method _initNavigation() pour initialiser la navigation pour le layout :Code:
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 layout.phtml (application/layout/script/layout.phtml) je crée une balise <div> dans laquelle j'affiche mon menu :Code:
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); }
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 ...Code:
1
2
3 echo $this->navigation()->menu();
j'ai testé aussi ça à la place du code dans mon layout.phtml :
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 ...Code:
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>';
Est-ce que quelqu'un aurait une idée ?
Merci beaucoup d'avance =)