Ответ 1
Попробуйте следующее:
if ($validator->fails()) {
$error = $validator->errors()->first();
}
Я использую встроенный валидатор 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 символов". Как я могу это сделать?
Попробуйте следующее:
if ($validator->fails()) {
$error = $validator->errors()->first();
}
В вашем запросе ajax, когда вы получите data
, попробуйте data.name
.
Это даст вам сообщение об ошибке для поля name
.
$.ajax({
url: "/your-save-url",
type: "post",
data: serializedData,
success: function(data) { alert(data.name)}
});
Если проверка не удалась, метод withErrors
можно использовать для флеш-сообщения об ошибках в сеансе. Это массив, и этот метод будет автоматически делиться $errors
со всеми представлениями после перенаправления.
return redirect('register')->withErrors($validator, 'login');
Доступ к MessageBag
можно получить с помощью экземпляра из переменной $errors
:
{{ $errors->login->first('email') }}
API формы docs
Надеюсь, что это будет полезно.
В соответствии с Laravel 5.8 2019 года это так просто:
// create the validator and make a validation here...
if ($validator->fails()) {
$fieldsWithErrorMessagesArray = $validator->messages()->get('*');
}
Вы получите массив массивов имен полей и сообщений об ошибках. Примерно так:
[
'price'=>
[
0 => 'Price must be integer',
1 => 'Price must be greater than 0'
]
'password' => [
[
0 => 'Password is required'
]
]
]
Вы можете использовать другие средства получения сообщений проверки, предоставляемые классом Illuminate\Support\MessageBag
(фактически это тип объекта, который возвращает $validator->messages()
выше).
Перейдите к your_laravel_project_dir/vendor/illuminate/support/MessageBag.php
и найдите некоторые полезные методы, такие как keys
, has
, hasAny
, first
, all
, isEmpty
и т.д., Которые могут вам понадобиться при проверке на наличие ошибок проверки и настройке ответа HTTP. сообщений.
Легко понять, что они делают, посмотрев на исходный код. Вот ссылка на API Laravel 5.8, хотя, вероятно, менее полезная, чем исходный код.