Zend 2相当于Laravel 4路由过滤器

时间:2014-02-19 11:37:00

标签: php zend-framework laravel zend-framework2

我是Zend 2的新手,我首先开始使用laravel,我需要做点什么,我知道 Laravel的路由过滤器可以解决,但我正在使用Zend 2.

Laravel Route Filter

我检查了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');

1 个答案:

答案 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链接!