Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je cherche à avoir les menus en haut de la page mais que je tire de la base de données et non pas d'un fichier de configuration dans un module comme je vois partout.
Et comment faire pour qu'il soit dans un layout ?
J'ai 2 layout : Admin et Site.
Merci
Hors ligne
Hellow!
alors la désolé mais va falloir être plus précis ^^'
pour avoir ton menu tu peu l'enregistrer dans ta bdd comme une table normale, tu n'aura qu'a aller récupérer tes catégories au moment de la création de ta page.
Je te conseil d'aller voir du cotés des plugin controller, c'est pour moi la meilleure façon de réaliser ses menus ^^
Pour te résumer, les plug in sont des "micros controllers" qui te permettent de réaliser des tâches très précises.
(parfait pour réaliser la tâche : créer menu!! )
si tu est certains que ton menu n'aura pas besoin de radicalement changer, tu peu l'insérer dans ton layout,
mais je conseil plutot d'appeler ton plugin directement dans le controlleur au moment de rendre ta vue
dans ton controlleur: function monaction() { $menu = calldetonplugin; ... $view->addChild('menu', $menu); .... return view; } dans ta vue : <?= $this->menu;?> <div>mon super content</div> ...
même si du coup tu doit plus souvent répéter l'appel à la création de ton menu, tu en a un parfait contrôle et c'est peu couteux en thermes de lignes vu que tu aura externalisé sa création.
La maintenance n'en est donc pas vraiment diminuée, masi du coup tu peu t'autoriser la fantaisie d'avoir des pages sans menu!! ^_^
Dernière modification par flobrflo (08-03-2014 00:22:02)
Hors ligne
Salut, désolé flobrfo mais utiliser les plugins pour ça n'est clairement pas la bonne solution ! Tu dois l'appeler sur toutes tes actions de tous tes contrôleurs ! C'est rébarbatif et si tu veux le regirer tu dois passer dans chaque actions ... Donc clairement non ! Les plugins c'est par exemple identity(), params() qui permettent de s'implifier et d'éviter de réécrire du code ds tes contrôleurs ! La solution c'est d'utiliser les aides de vue qui fonctionnent à peu prêt de la même manière ! Tu peux avoir accès à la bdd si tu le créé depuis une factory ou en injectant le service locator avec l'interface ServiceLocatorAwareInterface. De cette facon ton aide de vue appelle le service qui s'occupe de récupérer les menus de la base de données et ton aide de cue retourne un viewModel (avec un template ou non). Pour l'utiliser il suffit de l'appeler dans le layout et c'est dispo partout dans toute ton application qui utilise ce layout.
Hors ligne
Wep, disons que dans l'idée je suis d'accord,
mais si tu veux qu'une de tes pages n'affiche pas ton menu, tu peu le gérer avec ton view Model?
EDIT: we oubli, enfait en mettant une petite condition dans le layout ça pourrait passer en effet ^^
Dernière modification par flobrflo (10-03-2014 08:03:39)
Hors ligne
Voila
Hors ligne