Я строю 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."]
}
]
Как я могу изменить результат ошибки пользовательского запроса, следуя первой опубликованной структуре.
Заранее спасибо.
Все, что вам нужно сделать, это реализовать свой собственный failedValidation
метод. По умолчанию
protected function failedValidation(Validator $validator)
{
throw new HttpResponseException($this->response(
$this->formatErrors($validator)
));
}
На самом деле вы должны оставить этот метод без изменений и реализовать собственную версию по умолчанию:
protected function formatErrors(Validator $validator)
{
return $validator->getMessageBag()->toArray();
}
Других решений пока нет …