Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
добрый день
делаю проверку ввода данных в форму
код:
if($request->isMethod('post')) {
$messages = [
'name.required' => 'Поле имя обязательно к заполнению',
'email.required' => 'Поле почта обязательно к заполнению',
'text.required' => 'Поле text обязательно к заполнению'
];
$validator = Validator::make($request->all(), [
'name' => 'required|max:5',
'email' => 'required',
'text' => 'required'
], $messages);
if($validator->fails()){
return redirect()->route('home')->withErrors($validator)->exceptInput();
}
в представлении пытаюсь вывести ошибки таким образом:
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
отправляю пустую форму, но почему-то выводит сообщение, что в поле name должно быть не больше 5 символов, хотя я вообще его не заполнял, и другие правила игнорируются...
из-за чего такое может быть?
проблема решена
я в классе AppServiceProvider прописал в функции boot() код для просмотра всех sql-запросов:
public function boot()
{
DB::listen(function ($query) {
dump($query->sql);
});
}
когда я пытался залогиниться, меня перебрасывало на страницу где показывало запрос и потом редиректило обратно на форму авторизации.
я этот код убрал и теперь всё нормально
этот класс присутствует
в видео-уроках видно что даже после регистрации пользователя перенаправляет на защищённую страницу /home, а меня постоянно сбрасывает на форму авторизации...
вот видео https://www.youtube.com/watch?v=yEF4XuvdHwk
Laravel 5.3
пробую работать с системой аутентификации из коробки
зарегистрировать нового пользователя через форму регистрации получается
но вот залогиниться не получается, меня постоянно перекидывает на страницу /login
более того, я зарегистрировал несколько пользователей с разными почтой и именем, но разными паролями, но в базе данных пароли этих пользователей почему-то имеют разный хэш... пароли то при регистрации я указывал одинаковые... это нормально что у одинаковых паролей разный хэш?
и может кто-нибудь сталкивался с такой проблемой? всё из коробки, команда php artisan make:auth, и ничего более, но залогиниться не получается...
проблема решена:
я в файле Kernel.php в глобальную группу посредников изначально поместил класс \Illuminate\Session\Middleware\StartSession, но из группы web этот класс я не убрал
убрал этот класс из группы web и всё заработало
наверное логично, раз этот класс есть в глобальной группе...
в документации написано, что переменная $error должна автоматически содержать ошибки
вот код функции
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())
и да, редирект происходит
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);
}
при неправильно введённых данных форма не обрабатывается, т.е. валидация вроде срабатывает, но ошибка не выводится...
помогите пожалуйста))
Страницы 1