Laravel - ловля 404 - PullRequest
       3

Laravel - ловля 404

1 голос
/ 11 октября 2019

У меня есть эта функция обновления. Мне известно, что вызов findOrFail возвращает исключение модели, не найденной, отправленной пользователю. Есть ли способ добавить какой-нибудь код, чтобы перехватить это, если идентификатор не найден, или звонок делает это для меня? Вот функция, которую нужно применить тоже.

public function update(string $id)
{
    $this->user = Auth::user();

    $this->film = Film::findOrFail($id);

    if (!$this->hasFilm()) {
        abort(400, "You don't have a film configured");
    }

    $this->validation();

    $this->transaction();

    return $this->film->toJson();
}

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Если вы хотите сбросить пользовательский прерыватель, когда PodcastProfile не найден, просто для этого метода вы можете сделать что-то вроде:

public function update(string $id)
{
    $this->user = Auth::user();

    $this->podcastProfile = PodcastProfile::find($id);

    if (!$this->podcastProfile) {
        abort(400, "You don't have a podcast profile configured");
    }

    $this->validation();

    $this->transaction();

    return $this->podcastProfile->toJson();
}

Если PodcastProfile его не найдено 'будет пустым, и тогда вы получите abort(400)

0 голосов
/ 11 октября 2019

Вы можете вручную сделать try {...} catch {...} в этой функции.

Если вы хотите сделать это для всех мест, которые будут выбрасывать ModelNotFoundException, вы можете посмотреть на app/Exceptions/Handler.php и изменить render method

Однако, если вы видите, что делаете это для многих других исключений, лучше создать собственные исключения, как описано в документах

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...