Laravel по-русски

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

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

#1 Laravel 5.x » Валидация форм » 10.12.2016 19:26:52

Ilya3000
Ответов: 3

добрый день
делаю проверку ввода данных в форму
код:
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 символов, хотя я вообще его не заполнял, и другие правила игнорируются...
из-за чего такое может быть?

#2 Re: Laravel 5.x » Проблемы с аутентификацией » 02.12.2016 00:52:14

проблема решена
я в классе AppServiceProvider прописал в функции boot() код для просмотра всех sql-запросов:

public function boot()
    {
        DB::listen(function ($query) {

            dump($query->sql);

        });
    }

когда я пытался залогиниться, меня перебрасывало на страницу где показывало запрос и потом редиректило обратно на форму авторизации.
я этот код убрал и теперь всё нормально

#3 Re: Laravel 5.x » Проблемы с аутентификацией » 01.12.2016 23:42:12

этот класс присутствует
в видео-уроках видно что даже после регистрации пользователя перенаправляет на защищённую страницу /home, а меня постоянно сбрасывает на форму авторизации...
вот видео https://www.youtube.com/watch?v=yEF4XuvdHwk

#4 Laravel 5.x » Проблемы с аутентификацией » 30.11.2016 21:25:56

Ilya3000
Ответов: 4

Laravel 5.3
пробую работать с системой аутентификации из коробки
зарегистрировать нового пользователя через форму регистрации получается
но вот залогиниться не получается, меня постоянно перекидывает на страницу /login
более того, я зарегистрировал несколько пользователей с разными почтой и именем, но разными паролями, но в базе данных пароли этих пользователей почему-то имеют разный хэш... пароли то при регистрации я указывал одинаковые... это нормально что у одинаковых паролей разный хэш?
и может кто-нибудь сталкивался с такой проблемой? всё из коробки, команда php artisan make:auth, и ничего более, но залогиниться не получается...

#5 Re: Laravel 5.x » Валидация форм » 30.11.2016 00:32:40

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

#6 Re: Laravel 5.x » Валидация форм » 29.11.2016 23:27:25

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

#7 Re: Laravel 5.x » Валидация форм » 29.11.2016 23:23:58

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

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())
и да, редирект происходит

#8 Laravel 5.x » Валидация форм » 29.11.2016 17:36:52

Ilya3000
Ответов: 7

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);
        }

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

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