2017-03-21 3 views
0

タイトルで詳しく説明したように、forbiddenResponse()メソッドがLaravel 5.4のFormRequestから削除されています。Laravel 5.4 FormRequest forbiddenResponse()メソッドがfailedAuthorization()に置き換えられました

このメソッドはfailedAuthorization()メソッドに置き換えられ、AuthorizationExceptionがトリガーされるようになりました。

これは、私は、フォームのリクエストからリダイレクトを行う必要があるだろうと、もはや可能ではないようですので、私はトラブルが発生します。

誰もがこのように解決策を持っていますか? App\Exceptions\Handler

答えて

1

行くとrenderメソッド内にこれを追加します。遅れて申し訳ありません

if ($exception instanceof AuthorizationException) { 
    // Do what you want here, Response, Redirect... 
} 
+0

おかげシルが、これは非常に独創的なSI;)私はこの明日試してみてください! – Okipa

0

は、私は私の最後のメッセージ以来の父となりました;)ここで

は、あなたが与えたので、私がやっていることです私はあなたのヒント。

私は私のformRequestsが延びBaseRequestクラスを作成しました。その中に、私はそのようなfailedAuthorization方法オーバーライドた:App\Exceptions\Handlerクラスにおいて

protected function failedAuthorization() 
{ 
    $exception = new AuthorizationException('This action is unauthorized.'); 
    $exception->error_message = $this->error_message; 
    $exception->redirect = $this->getRedirectUrl(); 
    $exception->dontFlash = $this->dontFlash;   
    throw $exception; 
} 

を、Iはrender方法の次の処理追加しました:このプロセスに

if ($exception instanceof AuthorizationException) { 
    // ajax or api call 
    if ($request->expectsJson()) { 
     // treatment 
    } 

    // we notify the current user with a modal 
    if($exception->error_message) Modal::alert($exception->error_message, 'error'); 

    if ($exception->redirect){ 
     return redirect()->to($exception->redirect)->withInput(request()->except($exception->dontFlash)); 
    } else { 
     return redirect()->back()->withInput(request()->except($exception->dontFlash)); 
    } 
} 

を、私は満足を有しますカスタマイズ可能なformRequestを使用した治療。しかし、私はまだそれが少しばかりで、本当にきれいではないことがわかります。あなたや他の誰かがこれを実装するためのより良い方法を持っている場合、私はあなたとそれを議論する喜んでいるだろう。

+1

これは、よりクリーンな非常にすぐにもチェックアウトします:https://medium.com/@taylorotwell/weekend-laravel-improvements-26d0d230e48f – Syl

関連する問題