Laravel路由文件中的If条件
有没有办法在Laravel 5的routes.php文件中包含if语句?我尝试过这个方法,但不起作用:Laravel路由文件中的If条件,laravel,laravel-5,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 }); 我更希望这种方式能奏效。
Route::get('/', function()
{
if ( Auth::user() )
Route::get('/', 'PagesController@logged_in_index');
else
Route::get('/', 'PagesController@guest_index');
endif
});
我更希望这种方式能奏效。谢谢。您最初需要使用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');
}
});
但是,您可能需要做的是消除routes文件中的条件,并将其放在通用索引方法中-PagesController@index. 特别是如果URL在两条路由之间保持不变
public function index()
{
return Auth::check()
? View::make('pages.logged-in-page')
: View::make('pages.not-logged-in-page');
}
当然,这取决于你认为哪种方式更好。你应该使用check()而不是user() 它在拉威尔5号工作。我查过了
Route::get('/', function(){
if (Auth::check())
{
Route::get('/', 'PagesController@logged_in_index');
} else {
Route::get('/', 'PagesController@guest_index');
}
});
您所做的其他错误是if/else的语法。您可以使用这个
if (Auth::check()){
Route::get('/', 'PagesController@logged_in_index');
}
else {
Route::get('/', 'PagesController@guest_index');
}
在Laravel 5.3中。*它可以工作。它对我有用,所以我认为它应该对你有用 嗨。谢谢你的回复。当我使用Routes答案时,我得到以下错误:
传递给Illuminate\Routing\Router::group()的参数1必须是数组的实例,字符串给定
这是一个困难的@damnkid。虽然我已登录,但它现在默认为guest_索引。我猜这些路线无法判断是否有人登录。它假定im仍然是来宾。您使用的是Auth::user()还是Auth::check()?请坚持使用Auth::check-它严格返回布尔值。Auth::user返回用户模型(如果已登录),即使您已登录,该模型的计算结果也可能为false。让我们一起来吧。感谢所有人的持续支持,但这可能是我的设置的一个错误,因为一切都不起作用。我会解决这个问题,然后更新这个问题。我希望解决同样的问题。Auth::check()在L5.1的路由器中不起作用。当您具有相同的url但基于登录的控制器不同时,中间件也不起作用。还有其他解决办法吗?