Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour les z-f,
Comment peut on gérer deux type de menus different. A titre d'info j'opte pour un systeme modulaire donc je souhaiterais avoir un menu different d'un module par rapport aux autres modules.
Merci d'avance.
Hors ligne
Bonsoir,
Cela dépend, au final, de la façon dont tu crées ton menu (fichier ini, XML, base de données, ...).
Si tu travailles avec un fichier XML ou ini, tu peux créer un fichier par type de menu.
Si le menu est propre à un module, tu peux préfixer le nom de ton fichier par le nom du module, et du coup, charger le fichier de façon dynamique, à partir du nom du module courant.
Si tu récupères, comme moi, ton menu dans une table de ta base de données, c'est simple aussi : tu ajoutes un champ 'type_menu', qui sera en clause WHERE dans la requête qui ira chercher tes pages, lors de la construction de ton container.
C'est juste des pistes, il faudrait avoir plus d'infos sur ton cas pour t'aider plus précisément
Mais bon, ça fait un 'angle de réflexion'
Hors ligne
Merci pour le temps que tu as consacré pour me répondre delorbe,
J'apprécis beaucoups ta proposition de mettre une base de donées derriere. peux tu me faire un exemple avec la table que tu crées. Normalement j'utilise XML. Mais apres la réflexion que tu m'as fait je souhaiterais de le faire d'une maniere dynamique.
Et encore merci.
Hors ligne
De rien
Construire un menu dynamiquement a été la première chose que j'ai voulu faire avec Zend.
Il faut comprendre quelques principes avant tout, et d'abord, celui de Zend_Navigation.
Voici un exemple que tu peux mettre directement dans ton IndexController :
[lang=php] // Build navigation container $container = new Zend_Navigation(); $t_pages = array(); // Create two pages $t_pages[] = array('id' => 1, 'order' => 1, 'label' => 'Accueil', 'title' => 'Bienvenue sur mon site', 'module' => 'default', 'controller' => 'index', 'action' => 'index'); $t_pages[] = array('id' => 2, 'order' => 2, 'label' => 'Contact', 'title' => 'Contactez-moi', 'module' => 'default', 'controller' => 'index', 'action' => 'contact'); // Add pages to container $container->addPages($t_pages); // Use navigation as menu echo "<h1>Menu :</h1>"; echo $this->view->navigation($container)->menu()->render(); // Use navigation as breadcrumbs echo "<h1>Fil d'Ariane :</h1>"; echo $this->view->navigation($container)->breadcrumbs()->setMinDepth(0)->setSeparator(" » "); // Use navigation as sitemap echo "<h1>Plan du site :</h1>"; echo $this->view->navigation($container)->sitemap()->setFormatOutput(true);
Si tu comprends ce principe de base, alors il ne te reste qu'à aller chercher tes pages dans ta base de données, dans une table navigation qui contiendrait toutes les infos du tableau $t_pages.
Ensuite un simple select * from navigation, et tu peux parcourir tes résultats en insérant les enregistrements que tu as récupérés au fur et à mesure dans le tableau $t_pages.
C'est clair ou pas?
Hors ligne
Je penses que c'est très clair, deja avec ton code comme test marche à merveille. Bon je développerais une fois que je bloques je retournerai.
Hors ligne
Bon courage
Hors ligne
Bonjour Delorbe,
Je rebondis sur ton post car j'aimerais faire un menu dynamique (config db) mais je coince avec le ZF2 (beta5).
As-tu déjà essayé le ZF2?
Hors ligne
Bonjour lodotbe,
Non, désolé je ne me suis pas encore mis à ZF2.
Pas encore eu le temps, je travaille encore sur des projets en ZF1.
Et puis, j'attends que la version stable soit sortie pour m'y mettre
Hors ligne
lodotbe a écrit:
Bonjour Delorbe,
Je rebondis sur ton post car j'aimerais faire un menu dynamique (config db) mais je coince avec le ZF2 (beta5).
As-tu déjà essayé le ZF2?
Salut, essaie de mettre ça côté ZF2 tu auras peut être un peu plus de réponse, nous ne sommes que peu à utiliser le ZF2 actuellement (on doit pouvoir nous compter sur les doigts de la main).
Éventuellement tu peux indiquer ce sujet en complément dans ton poste afin de voir si quelqu'un a une solution à te proposer mais dans tous les cas il faudra faire preuve de patience !
Hors ligne