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