2016-05-12 13 views
0

Laravel 5.2では、のカスタムイベントハンドラ(ログインイベント用)があります。このように:Laravel 5.2:リターンリダイレクト()がカスタムイベントハンドラ内で正しく動作しない

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

handle機能がapp/Listeners/UserLoggedIn.phpにあります:

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

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

     return redirect('mypage'); 
    } 

} 

mypageルートが適切に定義されており、それはURLを介して手動で呼び出すことができます。 (そしてそれは走ります)。したがって、mypageルートに問題はありません。

イベントがトリガーされると、プロセスがIFの状態になっても、すべてがreturn redirect('mypage');を除いて動作します。 (そして)プロセスはの代わりにのルート(デフォルト)のルートを呼び出し続けます。

どうぞよろしくお願いします。

+1

これを参照してください。http://stackoverflow.com/questions/17797930/laravel-redirect-does-not-work-in-event-handler-listener –

+1

「応答」は決してアプリケーションから外すことはありません。そのハンドラから返された値だけです。ある時点でパイプラインの何かから戻さなければならないでしょう。 – lagbox

答えて

0

私はこれが最良の解決策ではないことを知っていますが、少なくとも回避する回避策を見つけました。ハンドラでLaravelのredirect()を使用することはできませんが、代わりにPHPのネイティブリダイレクトを使用して、関数から終了してください。

同様:

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

、少なくともそれは私がそれがになっているところで機能を停止することができ、その後、私は必要な場所に行ってみましょう。

関連する問題