php - Laravel:检查验证器失败的原因
问题描述
我正在使用两个规则对属性进行验证:required
和unique
. 与和att1
结合的属性在数据库中应该是唯一的。由于不同的失败原因,我想在不同的地方显示错误消息。例如,如果验证由于规则而失败,我想在一个 div 中显示错误消息,如果由于规则而失败,我想在另一个 div 中显示错误消息。 att2
att3
required
unique
这是我的验证器:
$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
解决方案
您需要执行以下两个条件检查。
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') {}
}
}
并重复这个独特的规则。我似乎找不到另一种更好的方法来做到这一点。
您可以查看有关如何检索特定字段的错误的文档。
推荐阅读
- javascript - React 如何在项目刷新时重置 GIF?
- python - 谁能告诉我内核 nparray 中用于卷积的 /4.0 代表什么?
- python - 在 ShuffleNet 中计算准确率函数
- python - 导入 ldap3 错误文件”
",第 1 行,在 文件“/usr/local/lib/python3.9/dist-packages/ldap3/__init__.py”,第 255 行,在 - javascript - 我可以使用 Fabric.js 在透明图像上叠加平铺图案吗?
- python - 为什么各种python库的双三次插值有区别?如何计算特定轴上的双三次插值?
- python - 如何在多个线程中运行`selenium-chromedriver`
- javascript - Lottie Hamburger Menu 在响应式页面中的使用
- c++ - 从内存加载 64 位 Windows PE 文件
- azure-devops - 如何识别 AzureDevops 中附加有变量组的管道列表