FormatErrors больше не работает в Laravel 5.5?

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

public function formatErrors(\Illuminate\Contracts\Validation\Validator $validator) {
    if($validator->fails()) {
        $validator->errors()->add('Message', "Validation failed");
    }
    return parent::formatErrors($validator);
}

Он возвращал сообщения об ошибках в Laravel 5.4, но похоже, что эта функция больше не работает в Laravel 5.5.

Кто-нибудь сталкивался с этой проблемой в Laravel 5.5?


person Pankaj    schedule 20.12.2017    source источник


Ответы (1)


В руководстве по обновлению вы можете прочитать:

В Laravel 5.5 все исключения, включая исключения проверки, преобразуются в ответы HTTP обработчиком исключений. Кроме того, изменился формат по умолчанию для ошибок проверки JSON. Новый формат соответствует следующему соглашению: ...

Итак, что вам нужно сделать, это добавить в файл app\Exceptions\Handler.php следующий метод:

protected function invalidJson($request, ValidationException $exception)
{
    return response()->json([
        'message' => 'Validation failed',
        'errors' => $exception->errors(),
    ], $exception->status);
} 

очевидно, вы можете захотеть больше настроить этот метод, потому что в предыдущих версиях Laravel по умолчанию он был таким:

return response()->json($exception->errors(), $exception->status);
person Marcin Nabiałek    schedule 20.12.2017
comment
Возможно ли вернуть пользовательские сообщения исключения проверки в определенном классе запроса? - person Pankaj; 20.12.2017
comment
Должна быть возможность переопределения метода failedValidation в отдельном классе запроса. - person Marcin Nabiałek; 20.12.2017