如果Laravel路由文件中的条件

时间:2015-03-23 23:18:10

标签: laravel laravel-5

有没有办法在Laravel 5中的routes.php文件中包含if语句?我试过这个但不起作用:

Route::get('/', function()
 {
   if ( Auth::user() )
     Route::get('/', 'PagesController@logged_in_index');
   else
     Route::get('/', 'PagesController@guest_index');
   endif
 });

我希望这种方式可行。感谢。

3 个答案:

答案 0 :(得分:1)

您最初需要使用Route :: group而不是Route :: get -

Route::group(['prefix' => '/'], function()
{
    if ( Auth::check() ) // use Auth::check instead of Auth::user
    {
        Route::get('/', 'PagesController@logged_in_index');
    } else{
        Route::get('/', 'PagesController@guest_index');
    }
});

但是您可能想要做的是摆脱路径文件中的条件,并将其置于通用索引方法 - PagesController @ index中。特别是如果两个路由之间的URL保持不变。

public function index()
{
    return Auth::check()
        ? View::make('pages.logged-in-page')
        : View::make('pages.not-logged-in-page');
}

当然,这取决于你认为哪种方式更好。

答案 1 :(得分:0)

您应该使用检查()而不是用户()

它在laravel 5中工作。我已经检查了它

 Route::get('/', function(){
        if (Auth::check())
        {
            Route::get('/', 'PagesController@logged_in_index');
        } else {
            Route::get('/', 'PagesController@guest_index');
        }
    });

你做错的其他事情是 if / else endif的语法。

答案 2 :(得分:0)

您可以使用此

if (Auth::check()){
    Route::get('/', 'PagesController@logged_in_index');
} 
else {
    Route::get('/', 'PagesController@guest_index');
}

在Laravel 5.3。*中有效。它适合我,所以我认为它应该适合你。