Ошибки Laravel $ в Blade Mistery

Может кто-нибудь объяснить мне, почему иногда мне нужно использовать $errors->all(), а иногда нет? Пытаюсь найти уникальное решение для массива ошибок и ошибок объекта $.

// View 1
@if (count($errors) > 0)
    @foreach($errors as $error)
        {{ $error }}<br>
    @endforeach
@endif

// View 2 that sometimes it crashes with:
// "Call to a member function all() on array"
@if (count($errors) > 0)
    @foreach($errors->all() as $error)
        {{ $error }}<br>
    @endforeach
@endif

Может быть, вы иногда вручную передаете ошибки своему представлению? Например: return view('...')->withErrors(['Your errors']);

Jonathon 29.08.2018 10:31

Вы должны вручную передавать ошибки где-то либо с помощью with('errors', [...]) в ответе представления, либо вручную устанавливая ошибки в сеансе с помощью session([ 'errors' => [...]), вам необходимо убедиться, что вы всегда используете withErrors([..]) либо в ответе представления, либо в ответе перенаправления, чтобы правильно установить неверное сообщение об ошибке.

apokryfos 29.08.2018 12:50

Какую версию Laravel вы используете? Кроме того, есть ли что-то другое в методах контроллера с тем, как вы обрабатываете проверку?

Rwd 29.08.2018 19:49

5.6 @RossWilson, и я ничего не делаю на контроллере.

Vixed 30.08.2018 23:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
81
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я не особо много занимаюсь laravel, но предполагаю, что вы всегда можете сделать что-то вроде этого:

  @if (count($errors) > 0)
    @if (is_array($errors))
      @foreach($errors as $error)
        // code
      @endforeach
    @elseif (is_object($errors))
      @foreach($errors->all() as $error)
        //code
      @endforeach
    @endif
  @endif
Ответ принят как подходящий

$errors->all(), если вы проверяете данные через Validator или в классе Request. См. Этот часть документации. Laravel использует переменную $errors как класс MessageBag.

$errors как array, используя if в контроллере, вы возвращаете что-то вроде этого:

return back()->withErrors([
    'field1' => 'Error in the field 1'
]);

В этом случае Laravel использует переменную $errors как array.

Я использую запросы без перенаправления.

Vixed 29.08.2018 10:45

Другие вопросы по теме