【问题标题】:Laravel 5 HTTP/Requests - pass url parameter to the rules() methodLaravel 5 HTTP/Requests - 将 url 参数传递给 rules() 方法
【发布时间】:2015-04-16 08:13:08
【问题描述】:

我正在尝试在新的 \HTTP\Requests\UpdateArticle 类下为 slug 字段创建一组规则,该字段需要应用 unique 过滤器,但前提是 id 不等于 url 参数路由名称article/{article}

到目前为止我得到的是:

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

}

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

【问题讨论】:

    标签: laravel-routing laravel-5 laravel-request


    【解决方案1】:

    从 URL 中获取 URL 参数:

    $this->route('id');
    

    here 也对此进行了很好的讨论。

    【讨论】:

      【解决方案2】:

      您可以使用input()按名称检索路由参数:

      $id = Route::input('id');
      return [
          // ...
          'slug' => 'required|unique:articles,id,' . $id,
          // ...
      ];
      

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

      【讨论】:

      • 您应该分享文档链接。伙计们现在不喜欢阅读:laravel.com/docs/5.0/routing
      • 谢谢 - 这似乎工作正常。另外 - 您认为在 Request 类中使用 Route 外观是一种好习惯吗?
      • 虽然我不确定我认为你真正想要的是这条规则:'required|unique:articles,slug,'.$id.'。关于门面。我宁愿为此使用依赖注入。确保输入提示 Illuminate\Routing\Router 而不是 Route
      • 谢谢 - 我就是这么想的 - 是的 - 这是过滤器中的 slug 而不是 id - 只是忘记更新票证。
      • 从 Laravel 5.1 开始,找不到类 'App\Http\Requests\Route' 或者它可能已被弃用。而且我无论如何都看不到从 5.1 文档中获取 URL 参数。我们如何解决这个问题以从 URL 中获取参数?
      猜你喜欢
      • 2014-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多