在 laravel 中重命名验证响应
Posted
技术标签:
【中文标题】在 laravel 中重命名验证响应【英文标题】:rename validation responses in laravel 【发布时间】:2019-12-05 00:32:00 【问题描述】:我正在使用laravel
处理我的后端,我需要验证密码字段和确认字段,为此我有以下验证规则(摘要):
$rules = [
'password' => 'required|min:5|confirmed',
'password_confirmation' => 'required',
];
在前端,我正在使用vue.js
和一个验证库vee-validate
,看起来或多或少像这样:
<div class="control-group">
<input type="password" v-validate="'required'" name="password" class="form-control" v-model="user.password">
<span class="red" v-show="errors.has('password')"> errors.first('password') </span>
</div>
<div class="control-group">
<input type="password" v-validate="'required|confirmed:password'" name="password_confirmation" class="form-control" v-model="user.password_confirmation">
<span class="red" v-show="errors.has('password_confirmation')"> errors.first('password_confirmation') </span>
</div>
并修改了库,以便它接收并显示我从 Laravel 发送的验证。这一切正常,我的问题是 Laravel 在密码字段中发送 password 确认不一样的消息:
"message":"The given data was invalid.","errors":"password":["The password confirmation does not match."]
对我来说有什么问题,因为标记为错误的字段将是名称为密码的字段,但是我认为这是不正确的,因为响应消息应该参考 password_confirmation字段,这是这种情况下的正常行为 de laravel 吗?我可以更改为答案中提到的字段吗?
【问题讨论】:
如果password_confirmation必须匹配password,那么它也必须有同样的验证。 【参考方案1】:这是confirmed
规则的一般行为。根据文档,
Confirmed
验证中的字段必须有匹配的 foo_confirmation 字段。例如,如果验证的字段是密码,则输入中必须存在匹配的密码确认字段。
因此,当确认字段与正在验证的字段的值不同时,它将引发该字段的错误。在您的情况下,密码字段不是确认。
您可以像这样修改验证逻辑:
$rules = [
'password' => 'required|min:5',
'password_confirmation' => 'required|same:password',
];
这将检查确认字段是否与密码相同,并在不匹配的情况下抛出错误。希望你能理解。
【讨论】:
非常感谢,因为我是 Laravel 新手,所以我没有注意到文档中的这条规则。谢谢你的时间! @max 很高兴看到它对你有用,祝 laravel 兄弟好运 ;)以上是关于在 laravel 中重命名验证响应的主要内容,如果未能解决你的问题,请参考以下文章