Сниппет Register от Login не создает пользователей

Здравствуйте!
По какой-то неизвестной причине, сниппет Register от Login не создает пользователей.
[[!Register?
                                  &submitVar=`login-register-btn`
                                  &activation=`0`
                                  &autoLogin=`1`
                                  &submittedResourceId=`5`
                                  &usergroups=`Users`
                                  &usernameField=`email`
                                  &passwordField=`password`
                                  &validate=`nospam:blank,
                                    password:required:minLength=^8^,
                                    password_confirm:password_confirm=^password^,
                                    fullname:required,
                                    email:required:email`
                                  &placeholderPrefix=`reg.`
                                ]]
                                [[!+error.message:default=`[[$regform]]`]]
Код чанка regform:
<form class="form" action="[[~[[*id]]]]" method="post">
                                <input type="hidden" name="nospam" value="[[!+reg.nospam]]">
                                <div class="form-item" id="not-acc" data-tab-content>
                                    <div class="form__inp-wrap">
                                        <div class="form__inp-item">
                                            <div class="arrow-inp arrow-inp2">
                                                <img src="modern/img/icons/inp-arrow.svg" alt="">
                                                <input type="text" name="fullname" id="fullname" value="[[!+reg.fullname]]" placeholder="Имя" class="form-inp">
                                                    <div class="invalid-feedback">[[!+reg.error.fullname]]</div>
                                            </div>
                                            <input type="email" placeholder="Email" name="email" value="[[!+reg.email]]" required class="form-inp">
                                                <div class="invalid-feedback">[[!+reg.error.email]]</div> 
                                            <input type="password" placeholder="Пароль" name="password" value="[[!+reg.password]]" required class="form-inp">
                                                <div class="invalid-feedback">[[!+reg.error.password]]</div>
                                            <input type="password" placeholder="Введите пароль еще раз" name="password_confirm" class="form-inp" value="[[!+reg.password_confirm]]">
                                                <div class="invalid-feedback">[[!+reg.error.password_confirm]]</div>
                                            <button class="form-btn" type="submit" name="login-register-btn">Создать аккаунт</button>
                                        </div>
                                        <div class="form__text-wrap">
                                            <p>Если у вас нет аккаунта, пройдите простую регистрацию.</p>
                                            <p>Введите ваше имя, email и пароль, и зарегистрируйтесь.</p>
                                        </div>
                                    </div>
                                </div>
                                </form>
В чем может быть причина? В логах ошибок нет. Спасибо!
Zulya
26 августа 2023, 17:55
modx.pro
1
455
0

Комментарии: 24

Артур Шевченко
26 августа 2023, 18:04
0
Надо логировать процесс начиная с отправки формы. Смотреть консоль браузера, журнал ошибок, логи сервера.
    Zulya
    26 августа 2023, 18:31
    0
    В консоле браузера и журнале ошибок, нет ошибок.
    Артур Шевченко
    26 августа 2023, 18:05
    0
    А ещё я удивлён, что кто-то в 2023 году делает регистрацию с перезагрузкой страницы.
      Zulya
      26 августа 2023, 18:10
      0
      А как сделать без перезагрузки страницы? Я сама удивилась, когда страница перезагружается после нажатия на кнопку.
          Zulya
          26 августа 2023, 20:14
          0
          C AjaxFormitLogin тоже с перезагрузкой страницы и данные формы передаются в адресную строку. Но новый пользователь и с AjaxFormitLogin не создался.
            Артур Шевченко
            26 августа 2023, 20:16
            0
            Значит вы что-то не правильно сделали. Напишите мне в телегу доступы посмотрю, если хотите.
      Dan
      Dan
      26 августа 2023, 19:46
      3
      +3
      Если вы указываете submitVar, то замените button на input
      <input class="form-btn" type="submit" name="login-register-btn" value="Создать аккаунт">
        Артур Шевченко
        26 августа 2023, 19:53
        0
        Боюсь у неё будут с этим проблемы, страница-то перезагрузится)))
          Dan
          Dan
          26 августа 2023, 19:55
          +1
          Ну пусть перезагружается, хотя бы регистрация будет работать) с button при указанном submitVar не будет
            Zulya
            26 августа 2023, 20:54
            0
            Будет ли работать регистрация с Login + AjaxForm?
              Dan
              Dan
              26 августа 2023, 20:57
              +3
              У Артура есть компонент AjaxFormitLogin, который правда уже не поддерживается, но выполнит вашу задачу в любом случае. Не знаю по поводу SendIt, тут уже Артур сам ответит)
                Артур Шевченко
                26 августа 2023, 21:07
                1
                +2
                Если хотите разобраться то вот и вот история моих изысканий на эту тему. Всё это в итоге переросло в компонент AjaxFormitLogin, поддержку которого я прекратил, потому что решил полностью переписать JS и PHP, которые достались мне по наследству от AjaxForm. Однако весь функционал из AjaxFormitLogin перекочевал в новый компонент SendIt. Он полностью готов и отлажен. Сегодня я закончил написание документации. Думаю в понедельник или во вторник он станет доступен для скачивание через менеджер пакетов в modstore.
                  Zulya
                  26 августа 2023, 21:49
                  0
                  Спасибо!
                  Пока изучу как использовать AjaxFormitLogin без fenom для регистрации/авторизации.
                  Первый раз его использование не решило перезагрузку страницы после отправки формы.
                    Артур Шевченко
                    26 августа 2023, 21:53
                    0
                    Лучше разберитесь с феном, с ним удобнее.
                      Zulya
                      26 августа 2023, 22:36
                      1
                      0
                      У меня на сайте очень много шаблонов. Если я правильно поняла, после включения фенома, на сайте весь код нужно будет под феном переписать. Поэтому пока не могу перейти на феном.
                      Вот так я вызвала AjaxFormitLogin:
                      [[!AjaxFormitLogin?
                      &snippet=`Register`
                      &hooks=`email`
                      &form=`regform`
                      &usergroupsField=`Member`
                      &submitVar=`login-register-btn`
                      &activation=`0`
                       &autoLogin=`1`
                       &usernameField=`email`
                       &passwordField=`password`
                       &validate=`nospam:blank,
                      password:required:minLength=^8^,
                      password_confirm:password_confirm=^password^,
                       fullname:required,
                      email:required:email`
                      &placeholderPrefix=`reg.`
                      ]]
                      А из кода формы убрала
                      action="[[~[[*id]]]]" method="post"
                      .
                      Теперь после отправки формы, страница не обновляется. Но также ничего не происходит. Поля формы остаются заполненными и не создается аккаунт.
                        Артур Шевченко
                        26 августа 2023, 22:54
                        +1
                        НУ я же давал ссылку на документацию по AjaxFormitLogin. Пакет Login использовать не нужно, весь его функционал уже есть в моём компоненте. В документации есть примеры вызовов для всех форм: регистрации, авторизации, восстановления пароля, редактирования данных, вам нужно только свой чанк формы подставить, ну и если мы говорим про регистрацию вот эти значения надо сохранить
                        &activation=`0`
                         &autoLogin=`1`
                          Zulya
                          27 августа 2023, 00:04
                          1
                          0
                          Артур, подскажите пожалуйста, с помощью AjaxFormitLogin возможно ли без перезагрузки страницы после отправки формы на той же странице отобразить TicketForm?
                          На странице добавления вопроса в шаблоне я разместила следующий код:
                          [[!+modx.user.id:isloggedin:is=`1`:then=`[[$addquestion]]`:else=`[[$authregtabs]]`]]
                          • [[$addquestion]] — в этом чанке у меня сниппет TicketForm
                          • [[$authregtabs]] — тут блок с табами, где есть формы авторизации/регистрации/восстановление пароля (как в этом видео скриншоте skrinshoter.ru/vLVs638ZeZi?a )
                          Когда посетитель не авторизован на сайте, ему отображается табы. Когда посетитель авторизуется/регистрируется, то сейчас страница перезагружается и потом отображается [[$addquestion]] со сниппетом TicketForm. А без перезагрузки страницы, даже после успешной авторизации/регистрации TicketForm не появляется, а остается формы в табах.
                            Артур Шевченко
                            27 августа 2023, 10:49
                            1
                            +1
                            Можно, только нужно создать css класс, который будет управлять видимостью элементов, если такого класса еще нет, например «d-none», и блоку с формой и блоку с табами добавить условия. Для формы
                            [[!+modx.user.id:isloggedin:isnot=`1`:then=`d-none`]]
                            для табов
                            [[!+modx.user.id:isloggedin:is=`1`:then=`d-none`]]
                            Ну и в JS на событие «afl_complete» если response.success и ['regForm', 'authForm'].includes(form.id) переключать классы.
                        Артур Шевченко
                        26 августа 2023, 22:57
                        +2
                        Ну и по поводу фенома, он нормально работает со стандартным парсером, главное чтобы в шаблонах и чанках не было открывающих фигурных скобок не относящихся к феном, а если есть, то после них нужно просто поставить пробел.
                          Артур Шевченко
                          26 августа 2023, 23:12
                          +1
                          Кстати, если вы не знали, есть группа в Телеграмм где помощь можно получить оперативнее
              Zulya
              26 августа 2023, 20:25
              0
              Заменила button на input. С таким способом, регистрация пользователей заработала.
              Получается проблема была в button и оно не давало создавать пользователей?
                Артур Шевченко
                26 августа 2023, 20:34
                +2
                Не передавалось значение submitVar поэтому скрипт не отрабатывал.
                  Dan
                  Dan
                  26 августа 2023, 20:51
                  3
                  +3
                  В принципе можно и button использовать, но тогда нужно указать у нее атрибут value с любым значением. Ибо иначе в post-запросе передается пустой ключ и поэтому submitVar не отрабатывает.
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                24