Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Запрос телефона
- *
- * @Route("/promo/login", name="login_by_phone")
- * @Template()
- */
- public function loginAction(Request $request)
- {
- // если мы просто открыли страницу то вернутся на главную
- if ( (false !== $this->getSessionPhone($request)) ) {
- return $this->redirect($this->generateUrl('app_promo_promo'));
- }
- // Создается попытка пользователя, для базы данных, ATEMPT это сущновть она в Entity папке
- $attempt = new Attempt();
- $cb = $this->createFormBuilder($attempt)
- ->add('phone', TextType::class, [
- 'label' => 'phone.number',
- 'attr' => [
- 'autofocus' => 'autofocus',
- 'class' => 'phone mask form-control',
- 'placeholder' => 'phone.number.placeholder'
- ]
- ])
- ->setAction($this->generateUrl('login_by_phone'))
- ->add('login', SubmitType::class, [
- 'label' => 'Отправить',
- 'attr' => [
- 'class' => 'btn btn-primary like-dim-btn m-t-lg m-b-lg',
- ]
- ])
- ;
- // тут генерируется форма
- $form = $cb->getForm();
- // тут уже обрабатывается POST запрос, можно например его исключить если много повторений
- $form->handleRequest($request);
- if ($form->isSubmitted() && $form->isValid()) {
- // в попытку записываем телефон
- $attempt->setPhone($this->formatPhone($attempt->getPhone()));
- $phone = $attempt->getPhone();
- // @todo тут не сохраняется attempt
- // возможно надо сохранить вот примерно так как ниже в коментах:
- //$em = $this->getDoctrine()->getManager();
- //$em->persist($attempt);
- //$em->flush();
- // если телефон правильно введен
- if ($this->phoneIsValid($phone)) {
- // ставим его в сессию
- $this->setSessionPhone($request, $phone);
- // TO это редирект после тогдо как пользователь все подтвердит, туда должно переправлять пользователя
- if (false !== $to = $this->getSessionTo($request)) {
- // если задан редирект пробуем туда зайти
- // как раз там и будет ввод кода
- return $this->redirect($to);
- } else {
- // если не задан редиректим на главную страницу
- return $this->redirect($this->generateUrl('app_promo_promo'));
- }
- } else {
- $form->addError(new FormError('Не верный формат телефона'));
- }
- }
- return ['form' => $form->createView()];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement