鍍金池/ 問(wèn)答/PHP/ laravel,無(wú)法注冊(cè)Policy類

laravel,無(wú)法注冊(cè)Policy類

我照著文檔寫的,看了半天不知道哪里出錯(cuò)了,求大佬幫忙給看一下:
圖片描述
在AuthServiceProvider.php里的$policies屬性里注冊(cè)了ArticlesPolicy這個(gè)類。
在Policies文件夾下面也用artisan控制臺(tái)命令生成了一個(gè)ArticlesPolicy類:
圖片描述
但是我在控制器里面使用Gate::allows()命令的時(shí)候,卻出錯(cuò)了:
圖片描述
大佬幫忙看看是哪里出錯(cuò)了,我自己看了半天沒(méi)看出來(lái)。

這個(gè)是ArticlesPolicy策略類里定義的:

public function update(User $user, Article $article)
    {
        return $user->id == $article->user_id;
    }

這個(gè)是控制器里使用Gate類的地方:

public function edit($id)
    {
        $article = Article::findOrFail($id);
        if (Gate::allows('articles.update',$article)) {
            return view('articles.edit', compact('article'));
        }else{
            return 'helloworld';
        }
    }

在不加權(quán)限管理的時(shí)候,不管有沒(méi)有權(quán)限,訪問(wèn)類似blog.test/articles/123/edit這樣的地址的時(shí)候是沒(méi)問(wèn)題的。加了權(quán)限管理后,不管有沒(méi)有權(quán)限,訪問(wèn)同樣的地址就會(huì)出現(xiàn)上面的報(bào)錯(cuò)。

回答
編輯回答
情未了
但是我在控制器里面使用Gate::allows()命令的時(shí)候,卻出錯(cuò)了:

請(qǐng)貼出這部分的代碼


代碼上來(lái)看未發(fā)現(xiàn)問(wèn)題。

報(bào)錯(cuò)的關(guān)鍵信息:Class ArticlesPolicy does not exist ,說(shuō)明未發(fā)現(xiàn) ArticlesPolicy 這個(gè)類

1.更改 AuthServiceProvider 里 boot 這里的代碼,改成這種寫法

Gate::resource('articles', ArticlesPolicy::class);
根據(jù)題主反饋,這是正解。

2.上述步驟還是報(bào)錯(cuò)這個(gè)的話,并且在未發(fā)現(xiàn)代碼問(wèn)題的情況下,建議執(zhí)行如下操作

php artisan clear-compiled 
php artisan optimize
2017年5月6日 19:39
編輯回答
若相惜

第一張截圖,最后一條use引用的時(shí)候,你取的類的別名和下面繼承類的名字一樣?別名不要與你的類名重復(fù).

2017年2月22日 15:26