Bonjour à tous,
Je suis en train de créer un module permettant d'administrer un menu. L'ajout de page entrainera un enregistrement à la fais d'une page dans une table page et de son lien dans une table menu. Jusqu'ici pas de soucis.
Ma question porte sur la façon de gérer l'enregistrement et l'affichage de l'URL d'une page du menu. Jusqu'ici, j'ai toujours utiliser l'aide de vue baseUrl() ou url() pour générer des liens MVC dans mes scripts de vue. Or, je génère mon menu avec une fonction récursive qui me renvoi le menu sous forme d'un string.
Et là, je ne sais pas comment dire à l'application de traduire les données de ma BD (module, controller, action) en un lien avant de retourner le menu sous forme de string.
Un peu de code :
La ligne en rouge correspond à ce que je souhaite obtenir.
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 function genererRubriquesMenu($parent, $niveau, $tab) { $tools = new Application_Model_Tools(); $menu = ''; $niveau_precedent = 0; foreach ($tab AS $valeur) { if ($parent == $valeur['id_parent_menu']) { if ($niveau_precedent < $niveau) $menu .= "\n<ul><li class=\"arrow\"></li>\n"; $menu .= '<li class="' . $valeur["classe_menu"] . '"><a href="'. $this->url(array("module" => "page", "controller" => "index", "action" => "afficher"), "", true) . '">LIEN TEST</a>'; $niveau_precedent = $niveau; $menu .= $tools->genererRubriquesMenu($valeur['id_menu'], ($niveau + 1), $tab); } } if (($niveau_precedent == $niveau) && ($niveau_precedent != 0)){ $menu .= "</ul>\n</li>\n"; }else{ $menu .= "</li>\n"; } return $menu; }
Est-il possible d'utiliser une fonction du framework (dans le style de baseURL()) pour générer mes liens MVC à la volée comme dans une fonction récursive classique ? Ou suis-je obligé de passer par l'utilisation des Zend_Navigation_Page_Mvc ?
Je pourrai bien sur enregistrer en dur le lien, mais il n'y aurai pas la directive $this->url(array([.......])"", true); permettant de spécifier au framework qu'il ne doit pas garder l'url en cours.
Merci d'avance
Partager