templates/app/auth/signup.html.twig line 1

Open in your IDE?
  1. {% extends 'auth.html.twig' %}
  2. {% form_theme form _self %}
  3. {% block title %}Регистрация на ЭТП{% endblock %}
  4. {% block body %}
  5.     <div class="container">
  6.         <div class="row justify-content-center">
  7.             <div class="col-md-6">
  8.                 <div class="card mx-4">
  9.                     <div class="card-body p-4">
  10.                         {% include '_flashes.html.twig' %}
  11.                         {% block form_errors %}
  12.                             {% apply spaceless %}
  13.                                 {% if form.vars.errors|length > 0 %}
  14.                                     {% for error in form.vars.errors %}
  15.                                         <div class="invalid-feedback">
  16.                                             {{ error.message }}
  17.                                         </div>
  18.                                     {% endfor %}
  19.                                 {% endif %}
  20.                             {% endapply %}
  21.                         {% endblock form_errors %}
  22.                         <h1>Регистрация на ЭТП</h1>
  23.                         <hr/>
  24.                         <a class="btn btn-link px-0" href="{{ path('app_login') }}">Есть учетная запись?</a>
  25.                         {{ form_start(form, {'attr': {'id': 'signupForm'}}) }}
  26.                         <div class="mb-3">
  27.                             <label class="form-label mb-1" for="fieldEmail">Электронная почта</label>
  28.                             {{ form_widget(form.email, {'attr': {'placeholder': 'Электронная почта'}}) }}
  29.                             {{ form_errors(form.email) }}
  30.                         </div>
  31.                         <div class="mb-3">
  32.                             <label class="form-label mb-1" for="fieldLogin">Логин</label>
  33.                             {{ form_widget(form.login, {'attr': {'placeholder': 'Логин'}}) }}
  34.                             {% if form.login.vars.errors|length > 0 %}
  35.                                 {{ form_errors(form.login) }}
  36.                             {% else %}
  37.                                 <label style="font-size: 80%;">Логин должен содержать латинские строчные буквы или цифры, символ подчеркивания</label>
  38.                             {% endif %}
  39.                         </div>
  40.                         <div class="mb-3">
  41.                             <label class="form-label mb-1" for="fieldPassword">Пароль</label>
  42.                             <div class="input-group">
  43.                                 {{ form_widget(form.plainPassword.first, {'attr': {'placeholder': 'Пароль'}}) }}
  44.                                 <button class="btn btn-outline-secondary toggle-password not-focus" data-target="#form_plainPassword_first" type="button">
  45.                                     <i class="fa fa-eye-slash"></i>
  46.                                 </button>
  47.                                     {{ form_errors(form.plainPassword.first) }}
  48.                             </div>
  49.                             <label style="font-size: 80%;">
  50.                                 Пароль должен содержать не менее 6 цифр или букв, символов
  51.                             </label>
  52.                         </div>
  53.                         <div class="mb-3">
  54.                             <label class="form-label mb-1" for="fieldPasswordRepeat">Повторите пароль</label>
  55.                             <div class="input-group mb-3">
  56.                                 {{ form_widget(form.plainPassword.second, {'attr': {'placeholder': 'Повторите пароль'}}) }}
  57.                                 <button class="btn btn-outline-secondary toggle-password not-focus" data-target="#form_plainPassword_second" type="button">
  58.                                     <i class="fa fa-eye-slash"></i>
  59.                                 </button>
  60.                                 {{ form_errors(form.plainPassword.second) }}
  61.                             </div>
  62.                         </div>
  63.                         <div class="mb-3">
  64.                             Регистрируясь, я принимаю условия <a href="{{ privacyPolicyLink }}" target="_blank">Политики конфиденциальности.</a>
  65.                         </div>
  66.                         <div id="captcha-container" class="mb-3"></div>
  67.                         <button type="submit" class="btn btn-block btn-primary no-loader-spinner" id="button-submit">Создать учетную запись</button>
  68.                         {{ form_end(form) }}
  69.                     </div>
  70.                 </div>
  71.             </div>
  72.         </div>
  73.     </div>
  74.     <script src="https://smartcaptcha.yandexcloud.net/captcha.js?render=onload&onload=onloadFunction" defer></script>
  75.     <script>
  76.         const button = document.getElementById("button-submit");
  77.         document.addEventListener("DOMContentLoaded", function() {
  78.             document.getElementById("signupForm").addEventListener("submit", function (event) {
  79.                 event.preventDefault();
  80.                 button.disabled = true;
  81.                 button.innerHTML = '<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> Создание...';
  82.                 let keySmartCaptchaStatus = "{{ keySmartCaptchaStatus }}"
  83.                 if (keySmartCaptchaStatus === "on"){
  84.                     if (!window.smartCaptcha) return;
  85.                     window.smartCaptcha.execute();
  86.                 }else{
  87.                     callbackSmartCaptcha();
  88.                 }
  89.             });
  90.         })
  91.         function onloadFunction() {
  92.             if (!window.smartCaptcha) {
  93.                 return;
  94.             }
  95.             let test = ("{{ keySmartCaptchaTest }}" === "on") ? true : false;
  96.             const widgetId = window.smartCaptcha.render('captcha-container', {
  97.                 sitekey: '{{ keySmartCaptchaClientKey }}',
  98.                 invisible: true,
  99.                 hl: "ru",
  100.                 test: test,
  101.                 webview: true,
  102.                 shieldPosition: 'top-right',
  103.                 callback: callback
  104.             });
  105.             window.smartCaptcha.subscribe(
  106.                 widgetId,
  107.                 'challenge-hidden',
  108.                 () => {
  109.                     button.disabled = false;
  110.                     button.innerHTML = 'Создать учетную запись';
  111.                 }
  112.             );
  113.             window.smartCaptcha.subscribe(
  114.                 widgetId,
  115.                 'javascript-error', (error) => {alert(error.message)}
  116.             );
  117.         }
  118.         function callback() {
  119.             callbackSmartCaptcha();
  120.         }
  121.     </script>
  122. {% endblock %}
  123. {% block javascripts %}
  124.     {{ parent() }}
  125.     {{ encore_entry_script_tags('user_signup') }}
  126. {% endblock %}