如何在ZF2中获取应用程序布局中的当前(选定)模块名称?
目的:我的应用程序布局包括zf2应用程序的主菜单,每次选择模块时,我都需要突出显示模块的菜单语音.此外,我需要设置正确的路线(网址,动作)时,使用此菜单.
每个模块都有一个菜单语音:
目的:我的应用程序布局包括zf2应用程序的主菜单,每次选择模块时,我都需要突出显示模块的菜单语音.此外,我需要设置正确的路线(网址,动作)时,使用此菜单.
每个模块都有一个菜单语音:
<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>
我知道回答这个问题为时已晚,并且已经有很多答案可用,但万一有人看到这个问题,它可能会有所帮助.
在主要或任何Module的Module.PHP中,写下这个 –
class Module {
public function onBootstrap(MvcEvent $e) {
$sm = $e->getApplication()->getServiceManager();
$router = $sm->get('router');
$request = $sm->get('request');
$matchedRoute = $router->match($request);
$params = $matchedRoute->getParams();
$controller = $params['controller'];
$action = $params['action'];
$module_array = explode('\\',$controller);
$module = array_pop($module_array);
$route = $matchedRoute->getMatchedRouteName();
$e->getviewmodel()->setvariables(
array(
'CURRENT_MODULE_NAME' => $module,'CURRENT_CONTROLLER_NAME' => $controller,'CURRENT_ACTION_NAME' => $action,'CURRENT_ROUTE_NAME' => $route,)
);
}
}
然后,您可以在布局文件中使用$CURRENT_MODULE_NAME变量(在问题本身中完成).如果需要,可以使用上面代码中提到的其余变量.