模型视图控制器 – Zend Framework 2:查看匹配路线
发布时间:2020-12-13 13:51:46 所属栏目:PHP教程 来源:网络整理
导读:我正在通过开发一个基于骨架应用程序的小型MVC应用程序来学习ZF2.现在我试图根据匹配的路由隐藏一些固定的 HTML元素:就像一个例子,我不想在登录阶段显示主菜单. 我可以通过将toggle参数作为返回值从控制器动作中传递,但是它感觉不对,所以我只想从布局中检查
我正在通过开发一个基于骨架应用程序的小型MVC应用程序来学习ZF2.现在我试图根据匹配的路由隐藏一些固定的
HTML元素:就像一个例子,我不想在登录阶段显示主菜单.
我可以通过将toggle参数作为返回值从控制器动作中传递,但是它感觉不对,所以我只想从布局中检查匹配的路由,并相应地组成布局. 问题是,我不知道如何在模板中获得匹配的路由.这可能吗?是否有其他解决方案可以避免在控制器中添加布局逻辑 经过一些好的弗兰肯斯坦工作后,我可以找到解决办法.我喜欢使用一个帮手的想法,所以我刚刚尝试从主模块的boostrap函数传递它的Application对象: $app = $e->getApplication(); $serviceManager = $app->getServiceManager(); .... $serviceManager->get('viewhelpermanager')->setFactory('getRoute',function($sm) use ($app) { return new HelperGetRoute($app); }); 和助手功能: use ZendViewHelperAbstractHelper; 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(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |