2017-01-19 2 views
1

Я работаю над Ubuntu 16.04LTS и имеет среду бродячего дома с PHP 7.0 и Laravel 5.3. Я должен создать процесс регистрации на два этапа для пользователя. Например, на первой странице формы пользователь будет указывать свое имя, адрес электронной почты и пароль, как на странице регистрации по умолчанию, и появится кнопка «Далее», которая приведет к второй форме, и эти поля будут переданы этому вторая форма как скрытые поля. Отсюда после завершения второй формы пользователь нажмет кнопку «Регистрация», и это добавит данные первой формы в таблицу «Пользователи» при миграции пользователей по умолчанию, а заполненная на второй странице форма будет добавлять все эти данные к другая таблица, включающая пользовательский user_id этого пользователя, так что позже мы можем иметь красноречивое отношение между обеими этими таблицами.Как создать пользовательскую страницу регистрации для двухступенчатой ​​регистрации пользователя в Laravel 5.3?

Что я сделал, так это то, что я создал новый контроллер, где у меня есть конструктор, который позволит исключить эту настраиваемую страницу регистрации и вторую страницу формы. Тогда будет форма, которая является копией страницы регистрации по умолчанию, и эта форма регистрации будет отправлять значения, которые обрабатывает метод в контроллере под названием «Регистрация», и он примет все эти значения и передаст их во вторую форму и во второй форме я извлекаю все эти значения в скрытые поля ввода. Затем в том же настраиваемом контроллере я получил еще один метод, называемый «create», этот метод обрабатывает все запросы, полученные через эту форму. Тогда первый я экономлю все эти поля в соответствующие переменные, а затем я создаю новый экземпляр пользователя, как это:

$name = $request->name; 
$email = $request->email; 
$password = $request->password; 

$user = new User(); 
$user->name = $name; 
$user->email = $email; 
$user->password = bcrypt($password); 

И теперь, как только этот пользователь создается в базе данных я храню другие поля второй формы в соответствующие переменные, как и выше, а затем я создаю новый экземпляр для другой миграции, где я хочу сохранить значения в таблице second_form.

Теперь все работает нормально, и все значения хранятся в базе данных. Проблема заключается в том, что, как только пользователь нажимает кнопку «Зарегистрироваться», он направляется на вновь созданную страницу приветствия, но он все еще не вошел в систему. Ему нужно снова войти в систему из указанной выше ссылки для входа (я только изменил по умолчанию Регистрировать регистрацию и оставить «Логин» таким, какой он есть).

Может ли кто-нибудь вести меня, если есть какой-либо другой способ или наилучшая практика, благодаря которой я могу достичь той же цели, что и двухэтапная форма регистрации?

С уважением, Мохсин.

ответ

0

Вы можете вручную проверить подлинность созданного пользователя:

Auth::login($user); // Login given user 
Auth::login($user, true); // Login and remember the given user 

Если вам необходимо войти в существующий экземпляр пользователя в приложение, вы можете вызвать метод login с пользовательским экземпляром.

https://laravel.com/docs/5.3/authentication#other-authentication-methods

+0

Когда second_form сохраняются в базе данных перед вызовом приветственного вида, если я пытаюсь создать экземпляр Auth тогда я получение нулевого значения, например: $ auth = new Auth(); –

0

Я объясняю метод, который я использовал в одном из моих проектов, где я имел несколько страниц перед регистрацией.

Там с первой страницы переданные значения хранятся внутри сеанса. Затем на следующей странице появится дополнительная информация. Когда пользователь нажимает кнопку регистрации, я вставляю данные в таблицу.

Обязательно используйте Auth::login($user) для входа текущего пользователя после сохранения значений в БД и перенаправлять на приборную панель

+0

Это возвращает значение null, если я вызываю его перед возвратом вида: $ auth = new Auth(); $ auth = Auth :: login ($ user); dd ($ auth); –

+0

, вы должны вызвать это после сохранения вещей в базу данных, а затем вызвать эту функцию. После этого перенаправление на панель. –

+0

Да, это именно то, что я делаю, так как я сохранил оба экземпляра в базе данных для формы 1 для таблицы пользователей и формы 2 для таблицы second_form. После этого я вызываю Auth :: login ($ user), и он возвращает мне null. –

Смежные вопросы