 Laravel по-русски
Laravel по-русски
      
      
    Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
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);
        }
при неправильно введённых данных форма не обрабатывается, т.е. валидация вроде срабатывает, но ошибка не выводится...
помогите пожалуйста))
Не в сети
 Мастер
Мастер						
А редирект происходит?
Не в сети
 Мастер
Мастер						
Покажи исходный код метода validate.
"пихать" в flash массив ошибок errors контроллер за тебя не будет.
Так можно делать используя Request - https://laracasts.com/series/laravel-5- … oplay=true , с этим подходом ларавел сам сделает валидацию и сам заполнит массив ошибок.
Не в сети
 Мастер
Мастер						
Посмотри как ТС здесь отправляет ошибки - https://laravel.ru/forum/viewtopic.php?id=2095 .
Изменено covobo (29.11.2016 20:40:20)
Не в сети
вот код функции
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()) 
и да, редирект происходит
Не в сети
в документации написано, что переменная $error должна автоматически содержать ошибки
Не в сети
проблема решена:
я в файле Kernel.php в глобальную группу посредников изначально поместил класс \Illuminate\Session\Middleware\StartSession, но из группы web этот класс я не убрал
убрал этот класс из группы web и всё заработало
наверное логично, раз этот класс есть в глобальной группе...
Не в сети
Для laravel 5.8:
В файле /app/Http/Kernel.php ВЫРЕЗАЕМ \Illuminate\Session\Middleware\StartSession::class
и вставляем выше, в глобальную группу:
 protected $middleware = [
      ...
        \Illuminate\Session\Middleware\StartSession::class,
    ];Не в сети
Страницы 1