2016-12-07 1 views
1

Ich habe eine Middleware-Check von Login, wie viele Spiele hat der Benutzer, ich möchte eine andere Ansicht zeigen, wenn der Benutzer mehr als ein Spiel, aber ich habe jedes Mal Redirect-Fehler, wenn der Benutzer mehr als eins:Laravel Redirect innerhalb der Middleware?

Dies ist bei $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; 
} 

habe ich versucht, auch nur mit return route('games.board') aber es funktioniert nicht.

Wie kann ich hier richtige Umleitung einstellen?

+0

Welche Fehler zu vermeiden, bekommen Sie? –

+0

@AlexeyMezenin "Sie zu oft umgeleitet." – nowilius

+0

Code ist korrekt, aber stellen Sie sicher, dass die Route games.board diese Middleware nicht verwendet, denn wenn games.board Route diese Middleware verwenden, wird es in Redirect-Schleife gehen, so dass die Route, die Sie umleiten, nicht erneut umleiten sollte. –

Antwort

2

, wenn sowohl die Route innerhalb Middleware ist, dann sollten Sie die aktuelle Route überprüfen und wenn sie gleich wie Sie Ihnen Umleitung nicht umleiten Umleitung Schleife

$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

es funktioniert, aber jetzt habe ich immer auf diese Seite umleiten, ist es möglich, diese Anfrage nur durch Login zu begrenzen? – nowilius

+0

fügen Sie Auth Middleware vor dieser Middleware in Ihrer Route hinzu. so zum Beispiel. Route :: group (['Middleware' => ['auth', 'yourmiddleware']], function() {}); und dann wird es in Ihrer Middleware nur nach dem Einloggen gehen. –