@Artem0071
Безработный mr. Junior

Можно ли как то переделать firstOrFail?

Можно ли как то переделать ошибку firstOrFail при использовании API?

Я создал контроллер, в котором есть этот самый метод и при не нахождении просто выбрасывается огромная стандартная ошибка:
[{
    "message": "No query results for model [App\\Models\\User\\Confirmation].",
    "exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
    "file": "/Users/.../vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
    "line": 199,
    "trace": [
       ....


Хочу ее переделать в нечто подобное:
{status: 404, errors: [{'Not found': 'Model was not found'}]}


Думал это сделать через Exceptions/Handler, но ведь тогда и в обычной(не АПИ) версии тоже будет выдаваться эта ошибка.

Вообще я делаю логику не в самих контроллерах, а создаю Requests и под authorize и rules создаю дополнительный метод, а в контроллере просто делаю $request->execute();

Не знаю на сколько это правильно конечно, но мне так удобнее, чем делать огромные контроллеры.
Так вот, эти реквесты наследуют не FormRequest, а я создал дополнительный ApiFormRequest, в котором как раз смог переделать ошибки failedAuthorization и failedValidation

Я понимаю что firstOrFail не переделать тут же, но может есть место где можно будет сделать это правильно?
  • Вопрос задан
  • 198 просмотров
Решения вопроса 1
Лучше делать через Exceptions/Handler.

Так как у Вас включен дебаг режим, Вам будет выдаваться полная ошибка, а в отключенном режиме - тогда 404 страница.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы