我试图隐藏一个按钮,仅将其显示给管理员,我想我写的代码不错,但仍然无法获得想要的结果,我也看不到带有管理员帐户的按钮普通用户帐户
FolderPolicy代码
public function create(User $user)
{
if($user->is_admin)
return true;
}
视图
@can('create')
<a class="btn btn-primary" href="{{ route('newdoss') }}">New Folder</a>
@endcan
AuthServiceProvider文件
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
'App\Folder' => 'App\Policies\FolderPolicy',
];
我知道,如果通过身份验证的用户是管理员,还可以通过检查Direclty来获得我想要的结果,但是我想弄清楚为什么这个方法不起作用。谢谢。
答案 0 :(得分:1)
您需要指定要创建的资源或模型。使用create可以传递类的名称。对于更新和删除,您可以传递该类的实例。
@can('create', \App\Folder::class)
当策略失败时,您还需要返回false。您可以将创建方法简化为:
public function create(User $user)
{
return (bool) $user->is_admin
}