相关疑难解决方法(0)

Zend Framework 2:在视图中获得匹配的路由

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

我可以通过将切换参数作为控制器动作的返回值传递来轻松实现,但感觉不对,所以我只想从布局中检查匹配的路径并相应地构建布局.

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

在一些优秀的科学怪人工作之后编辑,我能够找到解决方案.我喜欢使用帮助器的想法,所以我只是尝试从主模块中的boostrap函数传递Application对象:

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

和辅助函数:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

model-view-controller routes zend-framework2

12
推荐指数
5
解决办法
4万
查看次数