Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel:仅当值更改时验证字段_Php_Laravel_Validation_Laravel 5 - Fatal编程技术网

Php Laravel:仅当值更改时验证字段

Php Laravel:仅当值更改时验证字段,php,laravel,validation,laravel-5,Php,Laravel,Validation,Laravel 5,我的laravel 5.5应用程序中的一些表单字段具有针对远程API运行的验证规则,并且需要相当长的时间。因此,我只希望在字段值更改(与当前存储在模型中的值不同)时运行这些昂贵的检查 是否已经实现了这一点,例如作为类似于有时的规则 我会这样想:只改变了|昂贵的|昂贵的|验证2。后一种规则仅在字段值更改时执行。假设您使用的是自定义请求类,rules()方法希望在应用验证之前返回关联数组 在应用验证之前,您可以使用请求内容动态构建规则数组,如下所示: /** * Get the validatio

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

是否已经实现了这一点,例如作为类似于
有时
的规则


我会这样想:
只改变了|昂贵的|昂贵的|验证2
。后一种规则仅在字段值更改时执行。

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

注意:我还没有运行这个程序,但是原理应该是好的。

在处理输入更改时需要使用javascript进行验证。不,这完全可以在PHP中实现。对于要验证的字段,需要调用post方法。因此,这意味着表单需要在验证之前提交。