Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
j'ai un probleme d'affichage de sous menu
j'ai le choix entre 2 méthodes : la première est d'ajouter des rubriques dans le fichier xml avec les fichiers de langue fr.ini et en.ini
et voila mon exemple :
le fichier xml :
<?xml version="1.0" encoding="UTF-8" ?> <config> <nav> <index> <label>m_home</label> <route>default</route> <module>default</module> <pages> <presentation> <type>uri</type> <uri>#</uri> <label>m_presentation</label> <controller></controller> <action></action> </presentation> <service> <type>uri</type> <uri>#</uri> <label>m_service</label> <controller></controller> <action></action> </service> <environement> <type>uri</type> <uri>#</uri> <label>m_environement</label> <controller></controller> <action></action> </environement> </pages> </index> <blog> <label>m_blog</label> <module>blog</module> <route>default</route> <pages> <annuaire> <type>uri</type> <uri>#</uri> <label>m_annuaire</label> <controller></controller> <action></action> </annuaire> <forum> <type>uri</type> <uri>#</uri> <label>m_forum</label> <controller></controller> <action></action> </forum> <section> <type>uri</type> <uri>#</uri> <label>m_section</label> <controller></controller> <action></action> </section> <categorie> <type>uri</type> <uri>#</uri> <label>m_categorie</label> <controller></controller> <action></action> </categorie> <article> <type>uri</type> <uri>#</uri> <label>m_article</label> <controller></controller> <action></action> </article> </pages> </blog>
la vue mpublicentete.phtml :
<ul dir="ltr"> <?php $html = array(); foreach ($this->navigation()->getContainer() as $page) { $active = "" ; if($page->isActive()) { $active = 'class="current-tab"'; } $html[] = "<li {$active}>"; $h = $page->getHref() ; $html[] = "<a href=\"{$h}\"><span>"; $html[] = $this->translate($page->getLabel()); $html[] = "</span></a>"; if($page->hasPages()) { $html[] =" <ul>"; foreach($page as $it ){ $hs = $it->getHref() ; $sp = $it->getLabel(); $html[] =" <li><a href={$hs}> {$sp}</a></li> "; } $html[] =" </ul> " ; } $html[] = "</li>"; } echo join(PHP_EOL, $html); ?> </ul>
cet exemple il affiche les sous-menus avec les menus dans la même ligne, si c'est possible de m'aider sur des modifications
II Méthode :
faire un plugin qui détecte le module en fonction et affiche leurs sous menus d'apres un fichier xml existe dans chaque module
je demande quelle est la meilleure méthode?
Hors ligne
bonjour
j'ai utilisé la 2 eme méthode , mais il me donne l'erreur suivante : ( ! ) Warning: Invalid argument supplied for foreach() in C:\wamp\www\applicationged\app\modules\default\views\scripts\menu\msubmunu.phtml on line 5
voila la vue du submenu :
<ul dir="ltr"> <?php $html = array(); foreach ($this->subnav as $page) //c'est la ou il y a le problème { $active = "" ; if($page->isActive()) { $active = 'class="active"'; } $html[] = "<li {$active}>"; $h = $page->getHref() ; $html[] = "<a href=\"{$h}\"><span>"; $html[] = $this->translate($page->getLabel()); $html[] = "</span></a>"; if($page->hasPages()) { $html[] =" <ul>"; foreach($page as $it ){ $hs = $it->getHref() ; $sp = $it->getLabel(); $html[] =" <li><a href={$hs}> {$sp}</a></li> "; } $html[] =" </ul> " ; } $html[] = "</li>"; } echo join(PHP_EOL, $html); ?> </ul>
et voila mon plugin :
<?php class Default_Plugin_LoadSubmenu Extends Zend_Controller_Plugin_Abstract { public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request){ $activeModuleName = $request->getModuleName(); switch ($activeModuleName) { case $activeModuleName="default": $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/modules/default/configs/subnav.xml', 'nav'); break; case $activeModuleName="blog": $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/modules/blog/configs/subnav.xml', 'nav'); break; case $activeModuleName="library": $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/modules/library/configs/subnav.xml', 'nav'); break; case $activeModuleName="news": $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/modules/news/configs/subnav.xml', 'nav'); break; default: break; } $navContainer = new Zend_Navigation($navContainerConfig); Zend_Registry::get('view')->subnav= $navContainer ; } } ?>
c'est à, dire ila charge les sous menu du menu parent en cas du clique.
je demande seulement de m'aider sur l'erreur en dessus
Hors ligne
bonjour
j'ai corriger le problème qui apparait, ça arrive seulement de la syntaxe au niveau de l'expression switch et des erreurs de nommage de balise dans les fichier xml.
maintenant j'ai des sous menu qui se chargent des fichiers xml .
Hors ligne
Pages: 1