Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel路由文件中的If条件_Laravel_Laravel 5 - Fatal编程技术网

Laravel路由文件中的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 }); 我更希望这种方式能奏效。

有没有办法在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::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但基于登录的控制器不同时,中间件也不起作用。还有其他解决办法吗?