Laravel 5.4 で Policy を使った認可処理をしています。
ログイン中のユーザーが記事一覧を表示可能であれば一覧へのリンクを表示するというものです。
html
1@if(Auth::guard('admins')->user()->can('view', App\Post::class)) 2 <a>記事一覧</a> 3@endif
App\Policies\PostPolicy.php の view メソッドは第2引数として Post オブジェクトを受け取る必要があるため、次のエラーが起きてしまいます。
Type error: Too few arguments to function
解決策として第二引数の初期値に null を指定しておけばとりあえずエラーは防げます。
php
1 public function view(Admin $user, Post $post = null) 2 { 3 // 4 }
あるいは新しくメソッド index を定義し、第2引数を取らなければそれでも良さそうです。
user()->can('index', App\Post::class)
php
1 public function index(Admin $user) 2 { 3 // 4 }
一覧表示はいわゆる CRUD で言うところの Read にあたるので view() を改造すべきのような気がしますが、専用のメソッド index() を定義したところで大きな問題はなさそうなのでどうすべきか迷っています。
このような場合どういった実装をするのがいいのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。