使用某些条件在表单请求中添加错误消息。
我正在提出表单请求以处理我的验证。在我的表单中,我有几个字段,但重要的字段是“月”,“日”或“年”下拉列表。它们都设置为必填,如果其中之一使必需的规则无效,则表单请求将通过在$ validator内创建另一个错误来处理该请求。
这样的逻辑。
If (month = fail || day = fail || year = fail) {
$validator->errors()->add('date', 'please fill out the whole date)
}
验证后,我想在表单请求中的某处进行此操作。
这是我对表单请求字段的规则。
public function rules()
{
return [
'name' => 'nullable',
'sex' => 'nullable',
'phone_number' => 'nullable',
'email' => 'nullable',
'month' => 'bail|required',
'day' => 'bail|required',
'year' => 'bail|required',
];
}
在我的视图(树枝模板)下的月,日,年的选择字段下,我可以看到此错误消息:
{{errors.first('date')}}
到目前为止,我还不知道如何编写条件并添加自定义错误消息。
编辑:我找到了答案,但是我不确定这是否是一个好习惯。也许有人可以找到比这更好的答案。
protected function failedValidation(Validator $validator) {
if (array_key_exists('month', $validator->failed()) ||
array_key_exists('day', $validator->failed()) ||
array_key_exists('year', $validator->failed()) ) {
$validator->getMessageBag()->add('date', 'sample error message');
}
}
答案 0 :(得分:0)
我认为最好使用验证钩之后。
您通常会将其添加到表单请求中。
/**
* Configure the validator instance.
*
* @param \Illuminate\Validation\Validator $validator
* @return void
*/
public function withValidator($validator)
{
$validator->after(function ($validator) {
if(
$validator->errors()->has('month')
|| $validator->errors()->has('day')
|| $validator->errors()->has('year')
) {
$validator->errors()->add('date', 'Please fill out the whole date!');
}
});
}
您可以检查documentation以获得更多信息。