我使用Laravel内置验证器,并希望获得第一条错误消息
if ($validator->fails()) {
$error = $validator->messages()->toJson();
.....
}
这是我打印错误时的结果
{"name":["The name must be at least 5 characters."],"alamat":["The address must be at least 5 characters."]}
在上面的示例中,我想得到第一个错误,即“名称必须至少为5个字符"。我该如何做到这一点?
7条答案
按热度按时间jtoj6r0c1#
试试这个:
vxbzzdmp2#
根据2019 Laravel 5.8及以上版本,从验证器获取所有错误消息非常简单:
你会得到字段名和错误信息的数组的数组,类似于:
您可以使用
Illuminate\Support\MessageBag
类提供的其他验证消息getter(它实际上是上面$validator->messages()
返回的对象类型)。消息包错误消息其他帮助程序
转到
your_laravel_project_dir/vendor/illuminate/support/MessageBag.php
并找到一些有用的方法,如keys
、has
、hasAny
、first
、all
、isEmpty
等,您在检查特定验证错误和定制HTTP响应消息时可能需要这些方法。通过查看源代码很容易理解它们的作用。下面是Laravel 5.8 API reference,虽然可能没有源代码有用。
nkcskrwz3#
在 AJAX 请求中,当您获得
data
时,尝试data.name
。这将给予
name
字段的错误消息。cu6pst1q4#
如果验证失败,可以使用
withErrors
方法将错误消息刷新到会话。这是一个数组,此方法将在重定向后自动与所有视图共享$errors
。可以使用
$errors
变量中的示例访问MessageBag
:表单API文档
希望这是有帮助的。
wribegjk5#
如果你使用toastr风格的错误显示,这将工作:
vfh0ocws6#
如果你想在控制器内部进行,你可以:
你会收到第一条短信
fsi0uk1n7#
要获取所有错误,请尝试以下操作: