有没有办法在Laravel 5中的routes.php文件中包含if语句?我试过这个但不起作用:
Route::get('/', function()
{
if ( Auth::user() )
Route::get('/', 'PagesController@logged_in_index');
else
Route::get('/', 'PagesController@guest_index');
endif
});
我希望这种方式可行。感谢。
答案 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。*中有效。它适合我,所以我认为它应该适合你。