我是Zend 2的新手,我首先开始使用laravel,我需要做点什么,我知道 Laravel的路由过滤器可以解决,但我正在使用Zend 2.
我检查了Zend 2的文档,但我似乎无法找到它。
我只需要在选定的路线上做一些记录和填充,我不想在每条路线的每个动作上添加该代码,因为我在这里有50多条不同的路线,但是在laravel我可以使用路由过滤器所以在选定的路线中,它会在进入那条路线之前先进入过滤器。
在laravel的路线中:
Route::get('route1',array('before'=>'generic','uses'=>'GenericController@getIndex'));
Route::get('route2',array('before'=>'generic','uses'=>'GenericController@getIndex'));
Route::filter('generic', 'RouteFilter');
答案 0 :(得分:1)
我之前没有使用过Laravel,但我跟着链接,我非常害怕这样说,
不,它不存在
您将使用控制器:
public function somethingAction()
{
if (!condition true) {
return $this->notFoundAction();
// or return $this->redirect()->toRoute('MyRoute');
}
// Route is filtered
}
您还可以将回调附加到MvcEvent::EVENT_ROUTE
事件:
public function(MvcEvent $e)
{
$e->getApplication()->getEventManager()->attach(MvcEvent::EVENT_ROUTE, function(EventInterface $e) {
// check the route and do whatever you like
$matchedRouteName = $event->getRouteMatch()->getMatchedRouteName();
if ($matchedRouteName = 'admin') {// or whatever you want to check
// check if user is admin
}
});
}
不仅MvcEvent::EVENT_ROUTE
,还有很多事件被触发,例如MvcEvent::EVENT_DISPATCH
。你只需要附加一个回调函数!
有关所有Mvc活动的完整列表,请查看this链接!