Laravel 5 HTTP/Requests - 将 url 参数传递给 rules() 方法

Laravel 5 HTTP/Requests - pass url parameter to the rules() method

我正在尝试在新 \HTTP\Requests\UpdateArticle class 下为 slug 字段创建一组规则,需要应用 unique 过滤器,但是仅当 id 不等于路由名称 article/{article}.

的 url 参数时

到目前为止我得到的是:

public function rules()
{
    return [
        'title' => 'required|min:3',
        'excerpt' => 'required',
        'body' => 'required',
        'slug' => 'required|unique:articles,slug,?',
        'active' => 'required',
        'published_at' => 'required|date'
    ];

}

我需要用 url 中的 ID 替换 slug 字段的唯一过滤器末尾的问号,但不知道如何获取它。

您可以通过 input():

按名称检索路由参数
$id = Route::input('id');
return [
    // ...
    'slug' => 'required|unique:articles,id,' . $id,
    // ...
];

正确there in the docs(向下滚动到访问路由参数值

从URL获取URL参数:

$this->route('id');

也有人对此进行了很好的讨论