2016-09-21 2 views
1

Laravelポリシーは、trueまたはfalseを返すcan()ステートメントとして定式化されています。しかし、アクションが許可されていない場合、なぜ(このメソッドはtrueまたはfalseのみを返すことができるため)理由が与えられることはありません。私たちがユーザーに言うことができるのは、このアクションを実行することができないということだけです。Laravel Policyがユーザ/発信者に失敗した理由を伝えることはできますか?

発信者にLaravelポリシーが失敗した理由を通知する確立された方法はありますか?

Illuminate\Auth\Access\AuthorizationException('Message why fails'); 

政策が失敗した場所に:あなたは何ができるか

答えて

1

は、例えばスローすることです。この例外がApp\Exceptions\Handlerで定義されている場合は、AuthorizationExceptionを介して、指定されたメッセージの要求に応答します。

+0

このようなことをすれば、try :: catchでラップすることなく、Gate :: check()のようなことをすることができますか? EDIT:Gate :: check()の定義を見て、実際にはtry-catchでその呼び出しをラップしますが、AuthorizationExceptionsを捕捉するだけなので、ポリシーにスローする例外はAuthorizationException(またはそれから継承)。私はあなたの答えを受け入れたとマークします、ありがとう! – quakes

関連する問題