在路线之后执行之前的路线

时间:2015-03-31 08:58:57

标签: php laravel laravel-4

在我的routes.php中,我有以下几组:

Route::group(array('before' => 'checkSomething', 'prefix' => '{lang}'), function() {
echo "1";
    Route::get('/', array('as' => 'home', 'uses' => 'HomeController@home'));
});

附加过滤器:

Route::filter('checkSomething', function(){
echo "2";
    if(!somethingNotRight($something)){
        return Redirect::route('index', array()));
    }
});

我的问题是,为什么首先调用路由组内的路由,然后过滤?如果我执行此代码,我会得到以下结果:

  

21

但我想要的是:

  

12

2 个答案:

答案 0 :(得分:0)

很简单不是吗?如果您想要在更改后应用过滤器,则在应用程序到达路径控制器之前,您正在使用过滤器:

Route::group(array('after' => 'checkSomething', 'prefix' => '{lang}')

答案 1 :(得分:0)

在执行路由时,不会调用Route::group闭包内的代码。它很早就被称为注册所有路线。过滤器工作正常,但要测试您是否需要将echo 放入控制器