Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut je travaille en ce moment sur une application modulaire.
Je voudrais à l'aide du composant Zend_Navigation charger le fichier xml de navigation par module.
Par exemple si j'ai un module Blog par exemple, je voudrais charger le fichier navigation.xml pour ce module pour l'afficher dans mon layout. si j'ai un module Admin, faire de même pour le fichier menuadmin.xml.
Hors ligne
Tu pourrais utiliser un plugin (Zend_Controller_Pugin) pour la gestion de ta navigation et ainsi charger le bon fichier xml selon le module demander dans la requête.
Voilà un exemple si tu veux :
[lang=php] class Test_Controller_Plugin_MonPlugin extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { /*récupération du xml selon le module*/ $module = strtolower($request->getModuleName()); $xmlFileName = 'menu'.$module.'.xml'; $xmlConfig = new Zend_Config_Xml("./path/to/" . $xmlFileName, 'section'); /*instanciation et configuration de ta navagation + helpers et autres*/ $navigation = new Zend_Navigation($xmlConfig); $view = new Zend_View(); $view->navigation($navigation); /* *ta configuration des helpers : menu, breadcrumbs, etc */ /*configuration du ViewRenderer*/ $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); $viewRenderer->setView($view); } }
Je n'ai pas la doc sous la main donc la syntaxe est à vérifier !
Hors ligne
Bonjour,
Merci Alcide_ pour cet exemple.
Je suis également sur un développement d'application modulaire.
Ma particularité :
je souhaiterai
- charger un menu de navigation générique (utilisé pour la plupart des modules)
- charger, quand je le souhaite, un menu spécifique supplémentaire pour certains modules.
Ceci me permettrai d'avoir un menu supplémentaire en fonction des droits des utilisateurs de mon appli. A moins que Zend_auth + Zend_acl soit une solution plus adéquat et de faire intervenir Zend_acl au niveau de Zend_navigation ?
Merci pour votre aide !
Hors ligne
Si tu veux afficher différents menus selon le rôle des utilisateurs, le plus simple est d'utiliser un plugin pour configurer tes aides de vue.
[lang=php] Test_Controller_Plugin_MonAutrePlugin extends Zend_Controller_Plugin_Abstract { /***/ public function preDispatch(Zend_Controller_Request_Abstract $request) { $acl = new Zend_Acl(); $role = 'guest'; /*Configuration, vérifications de role, de module/controller/action, etc*/ /*configuration des aides de vue*/ Zend_View_Helper_Navigation_HelperAbstract::setDefaultAcl($acl); Zend_View_Helper_Navigation_HelperAbstract::setDefaultRole($role); /***/ } }
Ainsi tu n'afficheras que les menus autorisés dans tes ACLs pour le rôle courant.
La doc sur les helpers de navigation
Personnellement j'utilise un plugin global qui gère tout ce qui a trait au ACLs et à l'authentification, ce qui permet de générer la navigation, l'identification, les autorisation d'accès, les redirections, etc...
Dernière modification par Alcide_ (23-08-2011 14:14:09)
Hors ligne
Merki
JC
Hors ligne