Laravel 8:找不到类'App\Policies\Gate'
Posted
技术标签:
【中文标题】Laravel 8:找不到类\'App\\Policies\\Gate\'【英文标题】:Laravel 8: Class 'App\Policies\Gate' not foundLaravel 8:找不到类'App\Policies\Gate' 【发布时间】:2021-06-12 05:55:14 【问题描述】:我定义了一个名为 UserPolicy
的策略,如下所示:
class UserPolicy
use HandlesAuthorization;
public function edit(User $user)
if(Gate::allows('edit', $user))
return view('admin.users.edit' , compact('user'));
abort(403);
在AuthServiceProvider.php
,我这样称呼它:
protected $policies = [
// 'App\Models\Model' => 'App\Policies\ModelPolicy',
User::class => UserPolicy::class
];
然后在 Blade 中,我添加了这个:
@can('edit', $user)
<a href=" route('users.edit' , ['user' => $user->id]) " class="btn btn-sm btn-primary">Edit</a>
@endcan
但是现在,我得到了这个错误:
找不到类“App\Policies\Gate”
我该如何解决这个问题?
【问题讨论】:
【参考方案1】:看起来你还没有在UserPolicy
类中导入Gate
门面
use Illuminate\Support\Facades\Gate;
【讨论】:
太棒了!但现在我得到Maximum function nesting level of '256' reached, aborting!
看到这个答案***.com/questions/8656089/…
@tejoslaeslio 您的门需要返回 true 或 false 以指示用户是否有权执行任务。您正在返回视图(它本身再次调用门)
@apokryfos 那么正确的方法是什么
这取决于你需要门做什么。这个想法是当你有@can('edit', $user)
行来确定当前用户是否可以对参数$user
执行edit
操作。如果当前用户可以编辑$user
,则门需要返回true
,否则返回false。这实际上取决于您的编辑策略是什么。也许您需要检查当前用户是否与$user
相同,或者当前用户是否是用户管理员或类似的人以上是关于Laravel 8:找不到类'App\Policies\Gate'的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8 - 找不到驱动程序:Illuminate\Database\QueryException 找不到驱动程序(SQL:select * from `list`)
在 laravel-8 中找不到 Laravel PHP 错误 404 [重复]
找不到类“Laravel\Socialite\SocialiteServiceProvider”