2017-05-24 4 views
0

私のプロジェクトにポリシーを実装しようとしています。UserRelationPolicyに追加したいカスタムメソッドaskFriendがあります。ポリシーが存在しないLaravel Gateリソース

私はUserRelationPolicyのaskFriendメソッドを実装しましたが、[email protected]から呼び出す際に、このメソッドから呼び出す方法を尋ねました。

何か$this->authorize('askFriend', $friend);のようなものですが、動作していなかったので、一切無視しました。だから私は、マニュアルでさらに検索し、私はこのようなリソース名にゲート方式でUserRelationPolicyで特定のメソッドをバインドすることが分かっ:Documentation Writing Gate

:あなたがここに表現を見つけることができます

Gate::resource('userrelation', 'UserRelationPolicy', [ 
    'userrelation.askfriendrelation' => 'askFriendRelation' 
]); 

このコードを実行しようとすると、次のエラーが表示されます。

Call to undefined method Illuminate\Auth\Access\Gate::resource() 

他に何もありません。 Resourceメソッドはまったく存在しないようです。多くの検索の後、ヘッダにすべてGateを含めるようにしてください。静的に、またはインスタンスで呼び出そうとしています。何も仕事はありません。その方法はどこにも見つかりませんでした...

それは何か忘れですか?ポリシークラスのコントローラからカスタムメソッドを呼び出すにはどうすればよいですか?

答えて

0

あなたは5.4を使用していますか?メソッドGate :: resourceは5.4でのみ実装されました。 いずれかのバージョンを使用している場合は、Gate::defineを使用する必要があります。このようなApp\Providers\AuthServiceProviderで門能力を設定

Gate::define('userrelation.askfriendrelation', '[email protected]'); 
+0

コマンド 'PHPの職人-V'は私に次のような結果' Laravelフレームワーク5.4.18'を与えるだから、私は右のバージョンでだと思いますしかし、私は方法を見つけることができません... – dib258

+0

'Illuminate \ Auth \ Access \ Gate.php'でGateクラスをチェックし、これと比較してください:' https://github.com/laravel/framework/blob/5.4/src/Illuminate/Auth/Access/Gate.php'と入力します。コードに違いがある場合は、composer.jsonを再度確認し、「composer update」を実行する必要があります。 –

+0

私は今日同じエラーが発生しました。私は 'compose update'を実行し、5.4.24に更新され、問題は解決されました。チャンスをつかむ。 –

関連する問題