Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-05-2012 13:48:43

devzend
Membre
Date d'inscription: 03-05-2012
Messages: 15

[Zend_navigation][1.11.11] afficher submenu depuis xml

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 :

Code:

<?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 :

Code:

<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

 

#2 28-05-2012 11:37:29

devzend
Membre
Date d'inscription: 03-05-2012
Messages: 15

Re: [Zend_navigation][1.11.11] afficher submenu depuis xml

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 :

Code:

<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 :

Code:

<?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

 

#3 28-05-2012 13:30:38

devzend
Membre
Date d'inscription: 03-05-2012
Messages: 15

Re: [Zend_navigation][1.11.11] afficher submenu depuis xml

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages