【问题标题】:Cannot access resource id from route in Laravel 5 delete request?无法从 Laravel 5 删除请求中的路由访问资源 ID?
【发布时间】:2015-07-02 10:05:13
【问题描述】:

如果资源属于我在 Laravel 5 中为其创建了删除请求的用户,我正在尝试授权对资源的删除请求。

对于另一个资源,我可以这样做:

public function authorize()
{
    if(Pivot::findOrFail($this->route('pivots'))->user_id != Auth::user()->id){
        return false;
    }

    return true;
}

所以基本上$this->route('pivots') 会返回用户试图删除的数据透视的 id,我会检查它是否属于当前用户。

但现在我正在尝试另一种类似于此的资源:

public function authorize()
{
    if(CropSection::findOrFail($this->route('crop-sections'))->pivot->user_id != Auth::user()->id){
        return false;
    }

    return true;
}

我试图死掉并转储$this->route('crop-sections'),结果为空,但请求是http://localhost:8000/crop-sections/10,其ID 为10。

我做错了什么?

【问题讨论】:

  • 如果您从路线和/或路线名称中删除破折号会怎样?
  • 想到了,但我没有尝试,我不知道为什么。我会试一试,让你知道。不幸的是,我不会有几个小时在 PC 旁。不过谢谢。我试试看
  • pivot 属性从何而来?它是关系还是自定义访问器?
  • 您是否尝试过运行php artisan route:list 来查看参数名称是否不是“crop-sections”?
  • @Alex:你是对的。删除“-”连字符解决了我的问题。向我解释为什么,赏金是你的。 :)

标签: php laravel laravel-5


【解决方案1】:

您必须将“crop-sections”更改为“crop_sections”。

路由参数不能包含 - 字符。请改用下划线 (_)。

您可以找到更多信息here

【讨论】:

    猜你喜欢
    • 2018-07-12
    • 2018-04-30
    • 2015-10-14
    • 1970-01-01
    • 2016-12-26
    • 2017-09-19
    • 2018-04-07
    • 1970-01-01
    • 2016-12-10
    相关资源
    最近更新 更多