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

前端之家收集整理的这篇文章主要介绍了模型视图控制器 – 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();

猜你在找的PHP相关文章