我正在使用两个规则对属性执行验证:required
和unique
。属性att1
与att2
和att3
的结合在数据库中应该是唯一的。我想以不同的失败原因在不同的地方在视图中显示错误消息。例如,如果验证由于required
规则而失败,我想在一个div中显示错误消息,如果验证由于unique
规则而失败,我想在另一个div中显示错误消息。
这是我的验证人:
$messages = [
'att1.unique' => 'Given combination has already been registered.',
'att1.required' => 'Please select att1',
'att2.required' => 'Please select your att2',
'att3.required' => 'Please select your att3',
];
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:6', 'confirmed'],
'att1' => [
'bail','required',
Rule::unique('users')->where(function ($query) use($attr1,$attr2,$attr3) {
return $query->where('att1', $attr1)
->where('att2', $attr2)
->where('att3', $attr2);
}),
],
'att2' => ['required'],
'att3' => ['required'],
],$messages);
当att1.unique
和att1.required
出现时如何显示错误消息?
答案 0 :(得分:1)
您需要执行以下两个条件检查。
if ($errors->has('att1')) {
foreach ($errors->get('att1') as $error) {
// This would list all errors for the att1 field
// Then it's just a simple conditional statement to
// check if it's the error you want
if($error == 'Please select att1') {}
}
}
,然后针对唯一规则重复此操作。我似乎找不到其他更好的方法。
您可以检查documentation,了解如何检索特定字段的错误。