ZF2:获取菜单突出显示的应用程序布局中的模块名称(或路径)
发布时间:2020-12-13 14:15:22 所属栏目:PHP教程 来源:网络整理
导读:如何在ZF2中获取应用程序布局中的当前(选定)模块名称? 目的:我的应用程序布局包括zf2应用程序的主菜单,每次选择模块时,我都需要突出显示模块的菜单语音.此外,我需要设置正确的路线(网址,动作)时,使用此菜单. 每个模块都有一个菜单语音: ul class="nav" ?p
如何在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变量(在问题本身中完成).如果需要,可以使用上面代码中提到的其余变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |