Advertisement
Guest User

Untitled

a guest
Oct 20th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. /**
  2. * Запрос телефона
  3. *
  4. * @Route("/promo/login", name="login_by_phone")
  5. * @Template()
  6. */
  7. public function loginAction(Request $request)
  8. {
  9. // если мы просто открыли страницу то вернутся на главную
  10. if ( (false !== $this->getSessionPhone($request)) ) {
  11. return $this->redirect($this->generateUrl('app_promo_promo'));
  12. }
  13.  
  14. // Создается попытка пользователя, для базы данных, ATEMPT это сущновть она в Entity папке
  15. $attempt = new Attempt();
  16. $cb = $this->createFormBuilder($attempt)
  17. ->add('phone', TextType::class, [
  18. 'label' => 'phone.number',
  19. 'attr' => [
  20. 'autofocus' => 'autofocus',
  21. 'class' => 'phone mask form-control',
  22. 'placeholder' => 'phone.number.placeholder'
  23. ]
  24. ])
  25. ->setAction($this->generateUrl('login_by_phone'))
  26. ->add('login', SubmitType::class, [
  27. 'label' => 'Отправить',
  28. 'attr' => [
  29. 'class' => 'btn btn-primary like-dim-btn m-t-lg m-b-lg',
  30. ]
  31. ])
  32. ;
  33.  
  34. // тут генерируется форма
  35. $form = $cb->getForm();
  36.  
  37. // тут уже обрабатывается POST запрос, можно например его исключить если много повторений
  38. $form->handleRequest($request);
  39. if ($form->isSubmitted() && $form->isValid()) {
  40. // в попытку записываем телефон
  41. $attempt->setPhone($this->formatPhone($attempt->getPhone()));
  42. $phone = $attempt->getPhone();
  43. // @todo тут не сохраняется attempt
  44. // возможно надо сохранить вот примерно так как ниже в коментах:
  45. //$em = $this->getDoctrine()->getManager();
  46. //$em->persist($attempt);
  47. //$em->flush();
  48.  
  49. // если телефон правильно введен
  50. if ($this->phoneIsValid($phone)) {
  51. // ставим его в сессию
  52. $this->setSessionPhone($request, $phone);
  53. // TO это редирект после тогдо как пользователь все подтвердит, туда должно переправлять пользователя
  54. if (false !== $to = $this->getSessionTo($request)) {
  55. // если задан редирект пробуем туда зайти
  56. // как раз там и будет ввод кода
  57. return $this->redirect($to);
  58. } else {
  59. // если не задан редиректим на главную страницу
  60. return $this->redirect($this->generateUrl('app_promo_promo'));
  61. }
  62. } else {
  63. $form->addError(new FormError('Не верный формат телефона'));
  64. }
  65. }
  66. return ['form' => $form->createView()];
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement