laravel,无法注册Policy类

我照着文档写的,看了半天不知道哪里出错了,求大佬帮忙给看一下:
https://img4.mukewang.com/5c8f52ff0001062708000491.jpg
在AuthServiceProvider.php里的$policies属性里注册了ArticlesPolicy这个类。
在Policies文件夹下面也用artisan控制台命令生成了一个ArticlesPolicy类:
https://img3.mukewang.com/5c8f53020001549708000491.jpg
但是我在控制器里面使用Gate::allows()命令的时候,却出错了:
https://img1.mukewang.com/5c8f53050001f41e08000593.jpg
大佬帮忙看看是哪里出错了,我自己看了半天没看出来。

这个是ArticlesPolicy策略类里定义的:

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

这个是控制器里使用Gate类的地方:

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

在不加权限管理的时候,不管有没有权限,访问类似blog.test/articles/123/edit这样的地址的时候是没问题的。加了权限管理后,不管有没有权限,访问同样的地址就会出现上面的报错。

慕慕森
浏览 452回答 2
2回答

慕田峪9158850

但是我在控制器里面使用Gate::allows()命令的时候,却出错了: 请贴出这部分的代码 代码上来看未发现问题。 报错的关键信息:Class ArticlesPolicy does not exist ,说明未发现 ArticlesPolicy 这个类 1.更改 AuthServiceProvider 里 boot 这里的代码,改成这种写法 Gate::resource('articles', ArticlesPolicy::class); 根据题主反馈,这是正解。 2.上述步骤还是报错这个的话,并且在未发现代码问题的情况下,建议执行如下操作 php artisan clear-compiled php artisan optimize

湖上湖

第一张截图,最后一条use引用的时候,你取的类的别名和下面继承类的名字一样?别名不要与你的类名重复.
打开App,查看更多内容
随时随地看视频慕课网APP