我正在使用laravel,并且希望自定义在出现验证错误时返回的消息属性。
{
"message": "The title field is required. (and 1 more error)",
"errors": {
"title": [
"The title field is required."
],
"slug": [
"The slug field is required."
]
}
}
请注意,我不是在谈论定制单个错误消息,我指的是定制返回的消息属性,该属性列出了第一个错误以及还有多少个其他错误。
1条答案
按热度按时间lyr7nygr1#
Laravel使用的所有错误信息都来自lang/en/validation.php文件。当然,如果没有使用其他语言。这个文件是一个键值对,基于验证规则失败,它识别键并获得消息。如果您想自定义消息,只需更改该特定键的值,当验证错误发生时,相同的消息将显示在您的视图。如果你愿意,你可以创建新的规则,并为这些规则添加自定义消息。Laravel如何进行验证的方法描述起来有点长,但在最后有一个Illuminate\Support\MessageBag.php对象在你的视图上可用,你可以用它来访问所有的错误。这个对象引用是$errors。如果你想知道更多你可以用这个对象做什么,检查它提供的所有方法:https://laravel.com/api/9.x/Illuminate/Support/MessageBag.html。对于一个输入字段,通常需要满足多个规则。当然,下面的规则对于电话号码来说不够好,但对于我想要显示的内容来说却很好:
输入如下:“abc”在两种情况下都将失败,不是数字,只有三个字符,至少10个。在这种情况下,将数字作为密钥的MessageBag将有两个不同的错误。当你想显示时,你可以选择你喜欢的一个。但大多数时候,这并不重要,所以你会选择第一个。这就是
$errors->first('number');
的原因。有不同的方法可以得到这些错误,但我不知道你是否可以修改$errors属性。你可以合并其他错误,但改变现有错误的值不确定你是否可以这样做。然而,如果你真的需要这样做,考虑这样做: