Русское сообщество разработки на 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