laravel Policy起作用的参数太少

时间:2018-09-26 12:48:20

标签: laravel

似乎我无法授权用户更新特定模型。授权全部或全部无效,但不适用于特定型号。

为第二个模型添加另一个参数似乎不起作用:

Too few arguments to function App\Policies\ProjectPolicy::update(), 1 passed

这是政策(即使显然尚未执行):

public function update(User $user, Project $project)
{
    dd($project)
}

这是项目控制器中的授权:

if ( !$currentUser->can( 'update', Project::find($id) ) )
{

}

2 个答案:

答案 0 :(得分:0)

似乎$this->authorize('update', Project::find($id))是正确的语法,但是,我还有其他一些我没有注意到的冲突问题。

答案 1 :(得分:0)

这个[参数太少] [1]

[1]:https://webstoked.com/set-up-controller-methods-policies-laravel/给了我一些深刻的见解。 代替:

public function update(Post $post, $id){
$this->authorize('update', $post);
$data = $this->validateRequest();
if (Post::where('id', $id)->exists()) {...

使用...

public function update(Post $post){
$this->authorize('update', $post);
$data = $this->validateRequest();
if ($post->id) {...