模型视图控制器 – Zend Framework 2:查看匹配路线

我正在通过开发一个基于骨架应用程序的小型MVC应用程序来学习ZF2.现在我试图根据匹配的路由隐藏一些固定的 HTML元素:就像一个例子,我不想在登录阶段显示菜单.

我可以通过将toggle参数作为返回值从控制器动作中传递,但是它感觉不对,所以我只想从布局中检查匹配的路由,并相应地组成布局.

问题是,我不知道如何在模板中获得匹配的路由.这可能吗?是否有其他解决方案可以避免在控制器中添加布局逻辑

经过一些好的弗兰肯斯坦工作后,我可以找到解决办法.我喜欢使用一个帮手的想法,所以我刚刚尝试从主模块的boostrap函数传递它的Application对象:

$app = $e->getApplication();
$serviceManager = $app->getServiceManager();
....
$serviceManager->get('viewhelpermanager')->setFactory('getRoute',function($sm) use ($app) {
    return new Helper\GetRoute($app);
});

和助手功能

use Zend\View\Helper\AbstractHelper;

class GetRoute extends AbstractHelper {
    private $sm;

    public function __construct($app) {
        $this->sm = $app->getServiceManager();
    }

    public function echoRoute() {
        $router = $this->sm->get('router');
        $request = $this->sm->get('request');

        $routeMatch = $router->match($request);
        if (!is_null($routeMatch))
            echo $routeMatch->getMatchedRouteName();
    }
}

也许有一个更清洁,更ZF2ish的方式来做到这一点…

另一个解决方案没有新的匹配
$routeMatch = $serviceLocator->get('Application')->getMvcEvent()->getRouteMatch();

echo $routeMatch->getMatchedRouteName();

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...