2016-05-12 10 views
0

In Laravel 5.2 habe ich meine Custom Event-Handler (für Login-Ereignis). Wie folgt aus:Laravel 5.2: "return redirect()" funktioniert nicht ordnungsgemäß in benutzerdefinierten Event-Handlern

protected $listen = [ 
    'Illuminate\Auth\Events\Login' => ['App\Listeners\UserLoggedIn'], 
]; 

Es gibt die handle Funktion in app/Listeners/UserLoggedIn.php:

public function handle(Login $event) 
{ 
    /** 
    * Some codes here 
    */ 

    if ($foo==$bar) { 
     //echo "I was here!"; 
     //exit; 

     return redirect('mypage'); 
    } 

} 

Die mypage Route definiert ist richtig und es kann manuell über url aufgerufen werden. (Und es läuft). So hat die mypage Route kein Problem.

Wenn das Ereignis ausgelöst wird, funktioniert alles außer return redirect('mypage');, auch wenn der Prozess in den IF Zustand fällt. (Und dann der Prozess weiterhin die Heimat (Standard) Route, anstelle von mypage Route.)

Jede Idee, bitte?

+1

siehe diese http://stackoverflow.com/questions/17797930/laravel-reirect-does-not-work-in-event-handler-listener –

+1

Diese "Antwort" macht es nie aus der Anwendung, es ist nur ein Wert, der von diesem Handler zurückgegeben wurde. Es müsste irgendwann von etwas anderem in der Pipeline zurückgegeben werden. – lagbox

Antwort

0

Ich weiß, dass dies keine beste Lösung ist, aber ich habe einen Workaround gefunden, der zumindest funktioniert. Ich kann Laravels redirect() nicht in Handlern verwenden, sondern stattdessen die native PHP-Umleitung verwenden und dann erzwingen, die Funktion zu verlassen.

Like:

header("location: /mypage"); 
return; 

Wenigstens erlaubt es mir die Funktion zum Anhalten, wo es soll, und mich dann gehen lassen, wo ich brauche.