Laravel Gate资源,政策不存在

时间:2017-05-24 12:38:41

标签: laravel resources policy

我正在尝试在我的项目中实施策略,并且我想要添加到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。试图静态地或使用实例来调用它。什么都行不通,而且找不到这个方法......

这件事被遗忘了吗?如何从策略类中的控制器调用自定义方法?

1 个答案:

答案 0 :(得分:0)

您确定使用的是5.4吗? Gate :: resource方法仅在5.4中实现。 如果您使用的是任何版本,则必须使用Gate::define

App\Providers\AuthServiceProvider中设置登机能力,如下所示:

Gate::define('userrelation.askfriendrelation', 'UserRelationPolicy@askFriend');