Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
策略不存在的Laravel门资源_Laravel_Resources - Fatal编程技术网

策略不存在的Laravel门资源

策略不存在的Laravel门资源,laravel,resources,Laravel,Resources,我试图在我的项目中实现策略,我有一个自定义方法askFriend,我想将它添加到我的UserRelationPolicy 因此,我在UserRelationPolicy中实现了askFriend方法,但在尝试从UserRelationPolicy@askFriend我问自己如何从这个方法调用它 类似于$this->authorize('askFriend',$friend')但它不起作用,有点忽略它。因此,我在文档中进一步搜索,发现我可以使用Gate方法将UserRelationPolicy中的

我试图在我的项目中实现策略,我有一个自定义方法
askFriend
,我想将它添加到我的
UserRelationPolicy

因此,我在UserRelationPolicy中实现了askFriend方法,但在尝试从
UserRelationPolicy@askFriend
我问自己如何从这个方法调用它

类似于
$this->authorize('askFriend',$friend')但它不起作用,有点忽略它。因此,我在文档中进一步搜索,发现我可以使用Gate方法将
UserRelationPolicy
中的特定方法绑定到如下资源名称:

Gate::resource('userrelation', 'UserRelationPolicy', [
    'userrelation.askfriendrelation' => 'askFriendRelation'
]);
您可以在此处找到表示:

当我尝试执行此代码时,会出现以下错误:

Call to undefined method Illuminate\Auth\Access\Gate::resource()
没别的了。资源方法似乎根本不存在。在多次搜索之后,尝试在标题中包含每个
门。尝试静态调用它或使用实例调用它。什么都不管用,方法也远未找到


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

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

App\Providers\AuthServiceProvider
中设置门功能,如下所示:

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

命令
php artisan-v
给出了以下结果
Laravel Framework 5.4.18
,因此我认为我的版本是正确的,但我没有找到方法…检查
illighte\Auth\Access\Gate.php中的Gate类,并与此进行比较:
https://github.com/laravel/framework/blob/5.4/src/Illuminate/Auth/Access/Gate.php
。如果代码中有任何差异,您应该仔细检查composer.json并运行
composer update
。我今天遇到了相同的错误,我运行了
compose update
,更新到5.4.24,问题得到了解决。试试看。