6
votes

ZF2: Obtenir le nom du module (ou la route) dans la mise en page de l'application pour le menu

Comment puis-je entrer dans zf2 le nom du module actuel (sélectionné) dans la mise en page de l'application? Objectif: ma disposition de l'application incluait le menu principal de l'application ZF2 et chaque fois qu'un module est sélectionné, je dois mettre en surbrillance la voix du menu du module. De plus, j'ai besoin de définir le bon itinéraire (URL, action) lorsque le menu est effectué avec ceci pour. Chaque module a une voix de menu:

<ul class="nav">
 <?php foreach ($menu_modules as $mod):
  $is_active = ($mod['name'] == $CURRENT_MODULE_NAME)?'selected':'';//GET MODULE NAME
 ?>
 <!--  class="active" -->
 <li><a href="#" <?php echo $is_active;?> ><?php echo $mod['title']; ?></a></li>
 <?php endforeach; ?>

 <li><a href="<?php echo $this->url('login/process', array('action'=>'logout')); ?>"><?php echo $this->translate('Logout') ?></a></li>
</ul>

<div class="row-fluid" id="main_container">
    <?php echo $this->content; ?>
</div>


0 commentaires

3 Réponses :


8
votes

Je sais qu'il est trop tard pour répondre à cette question et que de nombreuses réponses sont disponibles déjà, mais simplement au cas où quelqu'un voit cette question, il peut être utile.

dans le module du module principal ou de tout module .php , écrivez ceci - xxx

alors vous pouvez utiliser $ actuelle_module_name variable dans votre fichier de mise en page (comme dans la question elle-même ). Le reste des variables mentionnées dans le code ci-dessus peut être utilisé si nécessaire.


1 commentaires

Cela a bien fonctionné pour moi, avec la modification selon la réponse de Porta Tela Webbuilding



2
votes

Je préfère un moyen plus facile sans traiter avec module.php code>

Placez ce code dans layout.phtml strong> p>

$routeName = $this->getHelperPluginManager()->getServiceLocator()->get('Application')
               ->getMvcEvent()->getRouteMatch()->getMatchedRouteName();
if($routeName === "users") ...


1 commentaires

Mais cela ne retournera pas le nom du module actuel si nous sommes dans une route d'enfant. Par exemple, il peut retourner modulename / par défaut



1
votes

Utilisez array_shift stry> au lieu de Array_pop (Kunal Dethe Réponse):

$controller = $this->getParam('controller');
$module_array = explode('\\', $controller);
$module = array_shift($module_array);


0 commentaires