【问题标题】:Laravel unique validation must include appended text when validatingLaravel 唯一验证在验证时必须包含附加文本
【发布时间】:2020-10-19 14:25:09
【问题描述】:

我正在使用 Laravel 租赁包,其中我的数据库中有一个 domains 表,并且该表中 domain 列中的每个值都附加了 .test.co.uk.

当用户在表单中输入 URL 时,他们会看到一个输入元素(如上所示),他们在其中输入一个 URL/域,但 .test.co.uk 已附加,因此他们唯一需要输入的是在那之前的文字,例如他们将输入johnsmith 并在domain 列中存储johnsmith.test.co.uk. 我遇到的问题是我需要此列上的验证是唯一的,但在执行验证时还需要包含.test.co.uk 以便它看起来在存储在表中的值,因为如果用户输入johnsmith 并且当前在domains 表中有一条记录,其中值为johnsmith.test.co.uk,那么验证将通过,但我需要验证在这种情况下失败。我目前正在使用一个 Request 类,它扩展了 FormRequest 类,并且有这个:

public function rules()
{
   return [
       'url' => 'required|string|unique:domains,domain',
   ];
}

我也尝试过规则对象,但我认为规则对象不是解决此问题的正确方法。有没有方便的“Laravel”方式来做到这一点?

【问题讨论】:

  • 前端替换.test.co.uk发给后端,这样会更正确更快

标签: laravel forms validation request laravel-validation


【解决方案1】:

在您的请求类中使用prepareForValidation()

文档:https://laravel.com/docs/7.x/validation#prepare-input-for-validation

protected function prepareForValidation()
{
    $this->merge([
        'url' => $this->url . '.test.co.uk',
    ]);
}

【讨论】:

    猜你喜欢
    • 2018-07-29
    • 1970-01-01
    • 2015-04-13
    • 2017-10-11
    • 2020-10-20
    • 1970-01-01
    • 2014-06-28
    • 2015-02-27
    • 2018-01-30
    相关资源
    最近更新 更多