如何在Laravel中使用Rule::in验证规则时添加自定义错误消息
问题原因
自定义错误提示不生效的核心原因是验证规则对应的消息键写法错误:使用Rule类定义的验证规则,配置自定义消息时直接使用规则的通用名称即可,不需要完整书写Rule::in(xxx)内容。本次场景中Rule::in()对应的通用规则名称为in,因此消息键应该写为agency-name.in。
修复后完整代码
$agencies = Session::get('config.agency-names'); $agency_names = array(); for ($x = 0; $x < count($agencies['Agencies']); $x++) { $name = $agencies['Agencies'][$x]["AgencyName"]; array_push($agency_names, $name); array_push($agency_names, ''); } $request->validate([ 'referral' => 'required', 'agency-name' => ['required_if:referral,no', Rule::in($agency_names)], 'password' => 'required|min:6|regex:/[A-Z]/|regex:/[a-z]/|regex:/[0-9]/|confirmed' ], [ // 修正后的机构名称自定义错误消息 'agency-name.in' => '请选择合法的机构名称', // 原有密码自定义消息 'password.confirmed' => '确认密码不匹配,请重试', 'password.regex' => '密码不符合要求,请重试', 'password.min' => '密码不符合要求,请重试', ]);
补充说明
后续使用其他Rule类验证规则(如Rule::exists()、Rule::unique())时,自定义消息逻辑同理,统一使用字段名.规则名格式即可,例如user.email.unique、order.id.exists。
内容的提问来源于stack exchange,提问作者JED BOYLE
相关产品推荐
相关产品推荐

