我的laravel 5.5应用程序中的某些表单字段具有针对远程API运行的验证规则,并且花费相当长的时间。因此,我只想在字段值更改(与当前存储在模型中的值不同)时运行这些昂贵的检查。
是否已经实现了此功能,例如通常类似于sometimes
?
我会这样成像:only_changed|expensive_validation|expensive_validation2
。仅当字段值已更改时才执行后一个规则。
假设您使用的是自定义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;
}
注意:我还没有运行,但是原理应该没问题。