我有一个带有email
-field,email_confirmation
-field然后是fname
-&- lname
fields的表单输入,可以使用javascript进行克隆,以便可以添加多个名称。
因此,输入变量分别命名为email
,email_confirmation
和persons[0][fname]
+ persons[0][lname]
(如果提供了多个名称,则其索引将递增0)。
我正在尝试为数组输入设置自定义验证消息:
在 RegisterRequest.php
public function rules()
{
$rules = array();
foreach ($this->input('persons') as $index => $person) {
$fname = 'persons.' . $index . '.fname';
$lname = 'persons.' . $index . '.lname';
$rules[$fname] = 'sometimes|required_with:'.$lname.'|max:25';
$rules[$lname] = 'sometimes|required_with:'.$fname.'|max:35';
}
return array_merge([
'email' => 'required|confirmed|email',
'email_confirmation' => 'required',
], $rules);
}
public function messages()
{
$array = array(
'email.required' => 'Je e-mailadres is verplicht.',
'email.email' => 'Dit is geen geldig e-mailadres',
'email.confirmed' => 'E-mailadressen komen niet overeen.',
'email_confirmation.required' => 'Bevestig je e-mailadres.',
);
foreach ($this->input('persons') as $index => $person) {
$fname = 'persons.' . $index . '.fname';
$lname = 'persons.' . $index . '.lname';
$array[$fname.'.max:25'] = 'Je kan maximaal 25 karakters ingeven.';
$array[$lname.'.max:35'] = 'Je kan maximaal 35 karakters ingeven.';
$array[$fname.'.required_with:' . $lname] = 'Vul de voornaam in.';
$array[$lname.'.required_with:' .$fname] = 'Vul de achternaam in.';
}
return $array;
}
电子邮件错误消息已正确显示,但是不幸的是,输入数组的消息没有...任何想法如何实现这一点?我认为问题在于验证消息是使用点规则(attribute.rule
)定义的,但是我的输入数组属性也包含点...
对于自定义消息,您无需指定带有参数的实际验证规则。只是名字:
$array[$fname.'.max'] = 'Je kan maximaal 25 karakters ingeven.';
$array[$lname.'.max'] = 'Je kan maximaal 35 karakters ingeven.';
$array[$fname.'.required_with'] = 'Vul de voornaam in.';
$array[$lname.'.required_with'] = 'Vul de achternaam in.';
为了进行max
验证,您可以:max
在消息中使用占位符来检索传递给规则的数字:
$array[$fname.'.max'] = 'Je kan maximaal :max karakters ingeven.';
$array[$lname.'.max'] = 'Je kan maximaal :max karakters ingeven.';
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句