【问题标题】:Laravel: Validate field only when the value changedLaravel:仅在值更改时验证字段
【发布时间】:2020-04-26 20:44:41
【问题描述】:

我的 laravel 5.5 应用程序中的某些表单字段具有针对远程 API 运行的验证规则,并且需要相当长的时间。因此,我只想在字段值更改(与模型中当前存储的值不同)时运行这些昂贵的检查。

是否已经实现了这一点,例如通常类似于sometimes?

我会这样想:only_changed|expensive_validation|expensive_validation2。后面的规则只有在字段值发生变化时才会执行。

【问题讨论】:

  • 您将需要 javascript 来验证处理输入更改。
  • 不,这应该完全可以在 PHP 中实现。
  • 对于要验证的字段,您需要调用 post 方法。所以这意味着表单需要在验证之前提交。

标签: php laravel validation laravel-5


【解决方案1】:

假设您使用的是自定义 Request 类,rules() 方法需要在应用验证之前返回一个关联数组。

您可以在应用验证之前使用请求内容动态构建规则数组,如下所示:

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    $validation_array = [
        'name'     => 'required|string|max:255',
    ];

    if ($this->my_field === $some_condition) {
        $validation_array = array_merge($validation_array. [
            'my_field' => "required|expensive_validation|expensive_validation2"
        ]);
    }

    return $validation_array;
}

注意:我还没有运行这个,但原理应该没问题。

【讨论】:

    猜你喜欢
    • 2020-05-26
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 2016-06-05
    • 2014-10-07
    相关资源
    最近更新 更多