Laravel перенаправление обратно с помощью withErrors, но не может отображать ошибку - PullRequest
0 голосов
/ 17 июня 2020

Итак, у меня есть пользовательский интерфейс, в котором пользователи могут загружать видео. У меня есть правило проверки для предотвращения слишком больших видео. Но если видео даже больше, чем post_max_size, перед достижением класса formrequest выдается экран ошибки, а я этого не хочу. Я просто хочу проинформировать пользователя, что «Привет, это видео слишком велико». Поэтому я пошел в свой класс Handler. php и внес следующие изменения в функцию рендеринга:

public function render($request, Throwable $exception)
{
    if ($exception instanceof PostTooLargeException)
    {
        return back()->withErrors(['message' => 'Too big file']);
    }

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

Он возвращает меня к предыдущему URL-адресу, но не сообщает об ошибке, и это моя проблема.

Я пробовал

@error('message')

и

 @foreach($errors as $error)
        {{$error}}
 @endforeach 

даже

session->get('message');

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

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Я разобрался. Мне не удалось получить доступ к сеансу из Handler. php.

Вот решение проблемы: Невозможно получить доступ к сеансам в Laravel app \ Exceptions \ Handler. php

Но я сделал иначе. Я добавил к своему маршруту параметр, допускающий значение NULL, и при перенаправлении - если его еще нет - я добавил ошибку, передал ее своему клинку, и теперь он работает, но обратите внимание, что это не будет работать для каждого случая для ошибка, только на интерфейсе / интерфейсах, где вы добавляете эту функциональность.

0 голосов
/ 17 июня 2020

withErrors уже содержат error, и все, что вам нужно сделать, это поместить только сообщение

return back()->withError('Too big file');

и отобразить в лезвии, например

session('error')

Отредактировано мои рабочие данные

return redirect()->back()->withError('Data is used in another page, delete is not possibe!');

и в файле blade

@if (Session('error'))
  <p class="text-danger">{{ session('error') }}</p>
@endif
...