Laravel не может поймать исключение и перенаправить с сообщением об ошибке - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь поймать PostTooLargeException ошибку и перенаправить ее с сообщением об ошибке.Вот обработчик, который я написал

if ($exception instanceof \Illuminate\Http\Exceptions\PostTooLargeException) {
   return redirect()->back()->withErrors(['msg', 'Post is too large']);
}

Моя страница создания имеет функцию проверки на ошибки, и она работает, когда я тестирую на контроллере и через маршруты.

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

Перенаправление работает, однако я не могу получить сообщение об ошибке, и он ничего не отображает.Я что-то пропустил?

Обновление Пост ниже помог мне, но возникла еще одна проблема. И эта проблема была php.ini post_max_size, так как я увеличил ее, все начало работать.В сочетании с кодом ниже, конечно.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Вы можете добавить свой обработчик перенаправления в render метод app/Exceptions/Handler.php, как показано ниже:

/**
 * Render an exception into an HTTP response.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Exception  $exception
 * @return \Illuminate\Http\Response
 */
public function render($request, Exception $exception)
{
    if ($exception instanceof \Illuminate\Http\Exceptions\PostTooLargeException) {

       return \Illuminate\Support\Facades\Redirect::back()->withErrors(['msg' => 'The Message']);
    }

    return parent::render($request, $exception);
}

Затем он отправит вам ошибки во флэш-сессии, которые будут показаны на веб-интерфейсе.

0 голосов
/ 24 февраля 2019

Я думаю, что вы пытаетесь использовать 'msg' в качестве ключа для 'Post слишком большой', и если это так, то это должен быть ассоциативный массив.

->withErrors(['msg' => 'Post is too large'])

Но даже скод, который у вас есть, должен отображать сообщение об ошибке «msg» и «сообщение слишком велико» в вашем элементе ul.Таким образом, у вас будет 2 элемента списка в этом контейнере.Не видеть ничего технически неправильного в том, чем вы поделились, где вы не увидите ошибок при перенаправлении.

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