自定义Laravel 5.7验证属性时,是否可以在属性名称中包含通配符?我无法在此处确定指示通配符的正确方法。
我有一个联系人页面,其中列出了特定联系人的详细信息,包括他们的所有电话号码和电子邮件。在此页面上,您可以编辑其中的每个,并添加新的。因此,我使用了一个foreach语句来显示所有这些内容,并将其ID号包含在表单字段名称中,即:
这使它们的名称唯一,这意味着当验证失败时,我只能显示与特定号码或正在编辑的电子邮件相关的错误消息。但是,显示的错误消息中包含该数字,因此我得到诸如“电话区号10格式无效”之类的信息。或“电话号码27不能超过20个字符。”
在验证语言文件中定义通配符时,是否可以在属性名称中使用通配符?基本上,我希望能够做到这一点:
'attributes' => [
'phone_areacode_*.*' => 'phone areacode',
],
如果没有,如何在控制器的@update方法中定义属性名称?
答案 0 :(得分:1)
使用数组/对象发布值,并使用点符号指定验证规则/ lang:
{
"phone": {
"ID1234": {
"areacode": "123",
"number": "1231234",
"extension": "1"
}
}
}
<form action="?" method="post">
<input name="phone[ID1234][areacode]" />
<input name="phone[ID1234][number]" />
<input name="phone[ID1234][extension]" />
<input type="submit">Submit</input>
</form>
$validator = Validator::make($request->all(), [
'phone.*.areacode': 'required',
'phone.*.number': 'required',
'phone.*.extension': 'required',
]);
return [
'attributes' => [
'phone.*.areacode': 'phone area code',
'phone.*.number': 'phone number',
'phone.*.extension': 'phone extension',
],
]);
答案 1 :(得分:-1)
您是否尝试过这种方式?它来自Laravel文档
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],