2016-12-07 3 views
1

私は、ユーザーが複数のゲームを持っていますが、ユーザーが複数のを持っている場合、私は毎回エラーをリダイレクトしてしまった場合、私は別のビューを表示したい、ユーザーが持っているどのように多くのゲームは、ログインすることによりミドルウェアチェックを持っている:Laravelはミドルウェアの内部にリダイレクトしますか?

これは、ケース$assigned_games > 1

$games = Auth::user()->userGames; 
$assigned_games = count($games); 

if ($assigned_games == 1) { 
    return $next($request); 
} elseif ($assigned_games > 1) { 
    return redirect()->route('games.board'); 
} elseif ($assigned_games < 1) { 
    echo "no game bought"; 
    exit; 
} 

に私が唯一return route('games.board')でも試してみましたが、それは動作しません。

ここで正しいリダイレクトを設定するにはどうすればよいですか?両方のあなたのルートがミドルウェア内にある場合

+0

を避けるためにリダイレクトするべきではないのですか? –

+0

@AlexeyMezeninはあなたを何度もリダイレクトしました。 – nowilius

+0

コードは正しいですが、games.boardルートがそのミドルウェアを使用すると、リダイレクトループに入るので、リダイレクトしているルートが再びリダイレクトされるべきではないため、games.boardルートはこのミドルウェアを使用しません。 –

答えて

2

は、あなたは現在のルートを確認してください、あなたがリダイレクトされているように、その同じならば、あなたはどのようなエラーが出るんリダイレクトループ

$games = Auth::user()->userGames; 
$assigned_games = count($games); 

if ($assigned_games == 1) { 
    return $next($request); 
} elseif ($assigned_games > 1 && \Route::currentRouteName() != 'games.board') { 
    return redirect()->route('games.board'); 
} elseif ($assigned_games < 1) { 
    echo "no game bought"; 
    exit; 
} else { 
    return $next($request); 
} 
+0

それは動作しますが、今はいつもこのページにリダイレクトしています。このリクエストはログインのみで制限できますか? – nowilius

+0

ルート上にこのミドルウェアの前に認証ミドルウェアを追加してください。そう、元気です。 Route :: group(['ミドルウェア' => ['auth'、 'yourmiddleware']]、function(){}); これはミドルウェアにログインした後にのみ表示されます。 –

関連する問題