使用用户模型的时候我有一个问题,但是不能用方法。我有一个帖子模型和一个用户模型。我在PostPolicy
类中定义了一个add方法:
public function add(User $user){
if($user->isGuest()) return false;
return true;
}
我知道当使用或不能使用方法时,将使用的策略类将由我们传递给的模型实例自动解决,可以是或不可以像$user->can('update',$post)
那样的方法。但在这个例子中。 add
方法不需要post实例,所以我不能这样做$user->can('add',$post)
。有人能告诉我如何完成它吗?
答案 0 :(得分:1)
这是一个很好的问题。
有趣的是,Laravel 5.2没有记录,但它是5.4。所以你必须在Laravel 5.2中检查这是否适合你。
如果您没有要将对象模型传入策略检查,则文档说明您应该将其传递给Model::class
。在您的情况下,它是Post::class
作为参数。所以它是:
$user->can('update', Post::class);
如果这在Laravel 5.2中不起作用,您可以随时编写Gate而不是策略,只需使用Gate::allows()
或Gate::denies
方法: