在路线中添加功能?

时间:2014-03-24 15:43:55

标签: laravel laravel-4

这是我的路线:

Route::get('log-in', array(
'as' => 'log-in',
'uses' => 'AuthController@getLogIn'
));

添加测试的最佳方式是什么:

Route::get('log-in', function()
{
    if (Auth::check())//do something
});

我知道我可以将它添加为过滤器,但我只需要在这条路线上。

3 个答案:

答案 0 :(得分:2)

你不能同时做两件事,在你的路线中有一个功能和一个控制器动作,所以我看到三个选择:

1)将其添加为s过滤器,这是最好的过滤器。

2)在闭包(匿名函数)中实例化你的控制器并从中调用动作。

3)执行控制器内的Auth::check()或控制器调用的任何服务类。

答案 1 :(得分:0)

auth文件已经存在,为什么不使用它呢?

Route::get('log-in', array(
'before' => 'auth',
'as' => 'log-in',
'uses' => 'AuthController@getLogIn'
));

答案 2 :(得分:0)

您可以在'app / filter.php'文件中创建一个过滤器,如下所示:

Route::filter('myFilterName', function() {

    if (!Auth::check())
    {
            return Redirect::route('MyNamedRoutToLoginPage');
    }
});

然后你可以在'app / routes.php'文件中使用它,如下所示:

Route::group(array('before' => 'myFilterName'), function() {

// do your action here if user is logged

});