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

问题描述 投票:0回答:1

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

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

我会这样成像:only_changed|expensive_validation|expensive_validation2。仅当字段值已更改时才执行后一个规则。

php laravel validation laravel-5
1个回答
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;
}

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

© www.soinside.com 2019 - 2024. All rights reserved.