我需要在主要布局中知道,如果当前页面像“模块/控制器”。 所以,例如,如果我在“site.com/module/controller”这样的页面上,“www / module / application / view / layout / layout.phtml”中的布局必须明白我在页。
请告诉我,如何应对?
谢谢。
答案 0 :(得分:0)
可能的解决方案是将路线参数设置为Module.php
的布局变量。
假设您的路由配置如下所示:
'route' => '/[:module[/:controller[/:action]]]
您可以使用以下代码:
在Module.php
文件中
public function onBootstrap($e)
{
//....
$eventManager = $e->getApplication()->getEventManager();
$eventManager->attach('dispatch', array($this, 'initView' ));
//....
}
public function initView(MvcEvent $e)
{
$controller = $e->getTarget();
$route = $controller->getEvent()->getRouteMatch();
//set variables into the layout
$controller->layout()->modulename = $route->getParam('module');
$controller->layout()->controllername = $route->getParam('controller');
$controller->layout()->actionname= $route->getParam('action');
}
注意:如果您在路线参数中没有module
,则可以按以下方式获取:
$controllerClass = get_class($controller);
$moduleName = substr($controllerClass, 0, strpos($controllerClass, '\\'));
$controller->layout()->modulename = $moduleName;
在您的布局中:
现在您可以像这样访问布局中的变量:
Current page :<?php echo $this->modulename.'/'.$this->controllername.'/'.$this->actionname; ?>
示例:
Page:site.com/application/index/home
输出:Current page : Application/index/home