nat*_*ral 6 validation laravel laravel-5
我正在开发 Laravel 5.8 项目,并尝试显示使用requiredIf
验证规则的验证的自定义验证消息。
我的设置方法如下:
$validation = Validator::make(
$request->all(),
[
...
'sum' => [
Rule::requiredIf(function() use ($request){
$model = Model::find($request->id);
return $model->is_special; //returns a boolean value
}),
'numeric'
],
...
],
[
...
'sum.required_if' => 'This cannot be blank',
'sum.numeric' => 'Must use a number here',
...
]
);
Run Code Online (Sandbox Code Playgroud)
现在验证工作正常,numeric
验证的自定义消息也按预期显示,但我收到的该方法的消息requiredIf()
是 Laravel 的默认错误消息。
我也尝试过使用'sum.requiredIf' => '...'
,但这也不起作用,并且似乎找不到此场景的任何文档或示例。
nat*_*ral 10
我对此进行了一段时间的修改,并注意到为了使其发挥作用,我需要定义
'sum.required' => 'This cannot be blank'
并不是'sum.required_if' => 'This cannot be blank',
。
不确定这是否是预期的行为或只是一种解决方法,但我的推论是,通过回调,Rule::requiredIf(function() use ($request){...})
参数:other
和:value
不会被传递,因此它会退回到required
消息传递,我想这是有道理的,因为required_if
和required
不会在同一个:attribute
.
希望这对遇到此问题的人有所帮助。