Laravel, добавление значений в сообщение об ошибке пользовательского запроса

Я строю API, желаемый вывод при возникновении ошибки выглядит следующим образом:

{
"success": false,
"messages" : [
{
"field is missing for example",
....
}
]
}

У меня есть пользовательский запрос, который вызывается из контроллера следующим образом:

public function store(CoverageValueRequest $request, CoverageValueManager $manager){
$manager->create($request);
return response()->json(['success' => $manager->isSuccessful(), 'message' => $manager->getErrorMessage()]);
}

если CoverageValueRequest есть ошибка, которая будет через что-то похожее на это:

[
{
"series.0.values.0.cells": [
"The series.0.values.0.cells field is required when none of series.0.values.0.wifi are present."],
"series.0.values.0.wifi": [
"The series.0.values.0.wifi field is required when none of series.0.values.0.cells are present."]
}
]

Как я могу изменить результат ошибки пользовательского запроса, следуя первой опубликованной структуре.

Заранее спасибо.

0

Решение

Все, что вам нужно сделать, это реализовать свой собственный failedValidation метод. По умолчанию

protected function failedValidation(Validator $validator)
{
throw new HttpResponseException($this->response(
$this->formatErrors($validator)
));
}

На самом деле вы должны оставить этот метод без изменений и реализовать собственную версию по умолчанию:

protected function formatErrors(Validator $validator)
{
return $validator->getMessageBag()->toArray();
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]