Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 29.11.2016 17:36:52

Валидация форм

Laravel 5.3
при валидации формы ошибки почему-то не попадают в сессию и соответственно не могу вывести их во вьюхе при помощи переменной $errors
во вьюхе вывожу стандартным способом как это описано в документации:

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

в контроллере делаю проверку так:

if($request->isMethod('post')){
            $rules = [
                'name' => 'required|max:10',
                'email' => 'required|email'
            ];
            $this->validate($request, $rules);
        }

при неправильно введённых данных форма не обрабатывается, т.е. валидация вроде срабатывает, но ошибка не выводится...
помогите пожалуйста))

Не в сети

#2 29.11.2016 20:15:11

Re: Валидация форм

А редирект происходит?

Не в сети

#3 29.11.2016 20:28:33

Re: Валидация форм

Покажи исходный код метода validate.

"пихать" в flash массив ошибок errors контроллер за тебя не будет.

Так можно делать используя Request - https://laracasts.com/series/laravel-5- … oplay=true , с этим подходом ларавел сам сделает валидацию и сам заполнит массив ошибок.

Не в сети

#4 29.11.2016 20:40:07

Re: Валидация форм

Посмотри как ТС здесь отправляет ошибки - https://laravel.ru/forum/viewtopic.php?id=2095 .

Изменено covobo (29.11.2016 20:40:20)

Не в сети

#5 29.11.2016 23:23:58

Re: Валидация форм

вот код функции

public function validate(Request $request, array $rules, array $messages = [], array $customAttributes = [])
    {
        $validator = $this->getValidationFactory()->make($request->all(), $rules, $messages, $customAttributes);

        if ($validator->fails()) {
            $this->throwValidationException($request, $validator);
        }
    }

в ней уже проверяется if ($validator->fails())
и да, редирект происходит

Не в сети

#6 29.11.2016 23:27:25

Re: Валидация форм

в документации написано, что переменная $error должна автоматически содержать ошибки

Не в сети

#7 30.11.2016 00:32:40

Re: Валидация форм

проблема решена:
я в файле Kernel.php в глобальную группу посредников изначально поместил класс \Illuminate\Session\Middleware\StartSession, но из группы web этот класс я не убрал
убрал этот класс из группы web и всё заработало
наверное логично, раз этот класс есть в глобальной группе...

Не в сети

#8 11.07.2019 14:27:50

Re: Валидация форм

Для laravel 5.8:
В файле /app/Http/Kernel.php ВЫРЕЗАЕМ \Illuminate\Session\Middleware\StartSession::class
и вставляем выше, в глобальную группу:

 protected $middleware = [
      ...
        \Illuminate\Session\Middleware\StartSession::class,
    ];

Не в сети

Подвал раздела