2016-12-17 7 views
2

Ich verstehe, wie Benutzer mit redirect() -Methode umleiten, aber diese Methode gibt einen 302-Code zurück und der Browser muss eine zweite HTTP-Anfrage machen. Ist es möglich, die Anfrage intern an einen anderen Controller und eine andere Aktion weiterzuleiten?So führen Sie eine "interne" Umleitung in Laravel 5.3

ich diese Überprüfung in Middleware mache so meine Griff Funktion wie folgt aussieht:

public function handle($request, Closure $next) 
    { 
    if (auth()->user->age <= 20) { //example 
     //internally forward the user to a different [email protected] 
    } 

    return $next($request); 
    } 

} 

Antwort

3

Sie call Methode als verwenden können:

So
app()->call('App\Http\Controllers\[email protected]') 

Oder

app('App\Http\Controllers\ControllerName')->funName(); 

Ihre Middleware wird wie folgt aussehen:

if (auth()->user->age <= 20) { 
    return app()->call('App\Http\Controllers\[email protected]'); 
} 
+0

Wenn ich dies tue bekomme ich den Fehler "Call to a Member-Funktion setCookie() auf Null". in VerifyCsrfToken.php Zeile 136 bei FatalErrorException -> __ Konstrukt ('Nachricht' => '???', 'Code' => '???', 'Schweregrad' => '???', 'Dateiname' => '???', 'lineno' => '???', 'traceOffset' => '???', 'traceArgs' => '???', 'trace' => '??? ') in HandleExceptions.php Zeile 133 bei HandleExceptions-> fatalExceptionFromError (' Fehler '=>' ??? ',' TraceOffset '=>' ??? ') in HandleExceptions.php Zeile 118 bei HandleExceptions-> HandleShutdown () in HandleExceptions.php Zeile 0 – asolberg

-1

Sie redirect() Helfer Methode wie folgt verwenden können:

public function handle($request, Closure $next) 
{ 
    if (auth()->user->age <= 20) { //example 
     return redirect()->route('some_route_name'); 
    } 

    return $next($request); 
} 

In Ihrer Routen-Datei sollte die Route definiert werden als:

Route::get('users/age/', '[email protected]_name')->name('some_route_name'); 

hoffe, das hilft!

+0

Und das wird nicht eine 302 oder 301 zurückgeben? – asolberg

+0

Nein, ich denke nicht, es ist auf Laravel docs - https://laravel.com/docs/5.3/middleware#defining-middleware –

+1

Ich testete dies und das gibt tatsächlich eine 302 Redirect, die ich vermeiden wollte – asolberg

Verwandte Themen