我正在尝试在我的项目中实施策略,并且我想要添加到askFriend
的自定义方法UserRelationPolicy
。
所以我在UserRelationPolicy中实现了askFriend方法,但是当我尝试从UserRelationPolicy@askFriend
调用它时,我问自己如何从这个方法中调用它。
像$this->authorize('askFriend', $friend);
这样的东西,但它没有用,有点忽略它。所以我在文档中进一步搜索,发现我可以使用Gate方法将UserRelationPolicy
中的特定方法绑定到这样的资源名称:
Gate::resource('userrelation', 'UserRelationPolicy', [
'userrelation.askfriendrelation' => 'askFriendRelation'
]);
您可以在此处找到代表:Documentation Writing Gate
当我尝试执行此代码时,出现以下错误:
Call to undefined method Illuminate\Auth\Access\Gate::resource()
仅此而已。资源方法似乎根本不存在。经过多次搜索后,尝试在标题中包含每个Gate
。试图静态地或使用实例来调用它。什么都行不通,而且找不到这个方法......
这件事被遗忘了吗?如何从策略类中的控制器调用自定义方法?
答案 0 :(得分:0)
您确定使用的是5.4吗? Gate :: resource方法仅在5.4中实现。
如果您使用的是任何版本,则必须使用Gate::define
。
在App\Providers\AuthServiceProvider
中设置登机能力,如下所示:
Gate::define('userrelation.askfriendrelation', 'UserRelationPolicy@askFriend');