Как насчёт того, чтобы стандартная форма отправки сообщений работала без перезагрузки?

4

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

Естественно какое-то решение я придумывал, всё вроде срабатывает успешно, но на почту не приходит. То есть фактически вопрос не в том уже чтобы отправить через ajax(срабатывает успешно), но в том, что на почту почему-то уже не приходит? Убедительная просьба разработчикам движка: если всё же не будете делать её без перезагрузки, то хотя бы предложите какое-нибудь решение, хотя бы костыль какой-нибудь.

p.s. Я понимаю, что уже попросил слишком многого и просить чего-то большего будет верх наглости, но, пожалуйста, дайте возможность добавлять дополнительные поля, не заставляя вносить изменений в код движка, слетающих при обновлении.

13 комментариев

  • 0

    Есть же наверняка плагины, да и приложение мультиформ. не?

    • +3
      devellopah devellopah 22 апреля 2018 19:07 #

      эта приложение лажа (без обид автор), строит форму только в одну колонку, стоит 3k, перетирать стили формы приходится через !important.

      Если бы стандартная форма позволила добавлять поля и работала через ajax - цены бы ей не было.

      • +1
        replicant replicant 22 апреля 2018 21:35 #

        Поля добавить можно (я добавлял себе поле номер телефона к основному набору имя+мыло+текст). На почту приходит с полем телефона нормально. Но через ajax она не работает. Да и как-то было не нужно.

        НО! Для добавления поля надо лезть в исходник и добавить одну строчку такого вида _ws('Phone').': '.htmlspecialchars($this->post('phone'))."<br>\n". в waViewHelper.class.php в функцию sendEmail

        • +1
          devellopah devellopah 22 апреля 2018 23:25 #

          я же упомянул в тексте, читайте внимательнее

          дайте возможность добавлять дополнительные поля, не заставляя вносить изменений в код движка, слетающих при обновлении
        • +1
          devellopah devellopah 22 апреля 2018 19:10 #

          То, что я попросил сделать не очень сложно, так почему бы вам разработчикам движка не помочь нам простым смертным, вместо того, чтобы предлагать брать решение за 3k.

          • +1

            С Вами общаются не разработчики движка, а такие же пользователи как и Вы.

            О какой форме идет речь? О стандартном блоке для Сайта? Если так, то в том нужно указывать в url страницы на которой размещена форма (это я о том что Вы напридумывали).

            • +1
              devellopah devellopah 23 апреля 2018 19:49 #

              "напридумывали"? Вы можете что-то предложить, более элегантное решение?

            • +1
              devellopah devellopah 13 июля 2021 22:13 #

              Меняем

              <input type="submit" value="[s`Send`]" name="send">

              на

              <input type="hidden" value="1" name="send">
              <button type="submit">[s`Send`]</button>

              Убираем капчу (я не нашёл способа выполнить валидацию введённой капчи перед отправкой формы).

              Сначала убираем блок кода капчи из формы, затем меняем

              {if $wa->post("send") and $wa->sendEmail("", $errors)}

              на

              {$wa->storage(['captcha', $wa->app()], '')}
              {if $wa->post("send") and $wa->sendEmail("", $errors)}

              Для отправки по ajax, добавляем внизу скрипт

              <script>
                  $('.wa-form form').submit(function(e){
                      e.preventDefault();
                      $.ajax({
                          type: "POST",
                          url: location.href,
                          data: $(this).serialize(),
                          success: function(data){
                              console.log('success');
                          }
                      });
                  });
              </script>
            • +1
              devellopah devellopah 13 июля 2021 22:17 #

              Если кто знает способ проверить корректность введённой капчи, скиньте решение, пожалуйста.

            • +1
              devellopah devellopah 13 июля 2021 22:20 #

              Кстати, было бы круто, если бы разработчики движка предложили сразу два блока с формами, например

              site.send_email_form_standart

              и

              site.send_email_form_ajax

              • +1

                Да хоть сто форм с любыми полями и проверками какие вам надо.
                1.Сделать новый блок не проблема - там какие хотите поля добавляете.
                2.Сделать свой хэлпер, копируете туда хэлпер из $wa->sendEmail(wa-system/view/waViewHelper.class.php) и проверяете send и свои поля через этот хэлпер.
                Что-то типа {if $wa->post("send") and shopViewHelper_custom::sendEmail2(["mail1@opa.ru", "mail2@opa.ru"], $errors)}
                При обновлении ничего слетать не будет.

                Если нужно ajax без костылей, то всё тоже самое, только в плагин упихать. Плагин простейший.

                • +2
                  devellopah devellopah 14 июля 2021 18:51 #

                  Лол, я(как клиент) хочу, чтобы такие очевидные вещи уже были "в коробке", за которую я заплатил деньги.

                • +1

                  Есть же бесплатный плагин, только понять как он работает и все. Любая форма сразу оживает

                  Добавить комментарий

                  Чтобы добавить комментарий, зарегистрируйтесь или войдите