Laravel:仅在值更改时验证字段

时间:2020-01-09 09:20:01

标签: php laravel validation laravel-5

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

是否已经实现了此功能,例如通常类似于sometimes

我会这样成像:only_changed|expensive_validation|expensive_validation2。后面的规则仅在字段值更改时执行。

1 个答案:

答案 0 :(得分:0)

假设您使用的是自定义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;
}

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