sendIt вопросы по реализации некоторых задач

Отличное дополенние. На самом деле если разобраться, то настраивается быстрее и проще чем старый ajaxform.
Наверняка это все есть в документации, но она что-то не очень удобная, точнее обширная. Например, я не увидел все параметры которые можно указать форме data-si-*.
Остальное под катом
  1. Как указать форме, что бы она очищалась при отправке
  2. Можно ли, без сильных изменений указать, что бы стандартные уведомления были справа, увидел такой конфиг, но не разобрался. Например в подвале сайта вызвать какой-то скрипт с 3 строками...
  3. Вот я указал у поля data-si-event=«change» data-si-preset=«russian». И да, у меня всплывает уведомление, что поле заполнено неверно, но как сделать что бы у поля так же появился класс si-error, так же как происходит при нажатии кнопки отправить у формы. А еще было бы здорово узнать как просто добавить класс, но не выводить сообщение об успешной или об неуспешной валидации. А еще было бы круто понять как сделать, что бы не нужно было заранее знать название данного поля. То есть допустим я хочу это использовать для 10 разных полей name, surname и т.д… А в пресете 'russian' => ['validate' => 'name:required:russian',] не писать название поля, оно же как бы одно...
  4. Допустим я сделал в поле data-si-event=«change» data-si-preset=«russian». А так же в системной настройке sendIt указал емейл по умолчанию. Как сделать, что бы при выполнении данного события не было отправки письма? А то какой-то спам.
Спасибо
Ivan
23 июня 2024, 20:22
modx.pro
223
0

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

Артур Шевченко
23 июня 2024, 21:03
0
Например, я не увидел все параметры которые можно указать форме data-si-*
Посмотри тут

Как указать форме, что бы она очищалась при отправке
Добавить в пресет параметр
'clearFieldsOnSuccess' => 1,
Можно ли, без сильных изменений указать, что бы стандартные уведомления были справа
Сделай копию стандартного JS конфига, поменяй параметр position на нужный, укажи путь к новому файлу конфига в системной настройке si_js_config_path.

как сделать что бы у поля так же появился класс si-error
Класс устанавливается полю с тем именем, которое ты указал в пресете в параметре validate, само поле ищется внутри data-si-form, если в форме несколько полей с одинаковым именем, то класс будет добавлен только первому.

как просто добавить класс, но не выводить сообщение об успешной или об неуспешной валидации
Сообщений об успешной валидации не существует, а чтобы отменить показ сообщений об ошибках, нужно написать обработчик на событие si:send:error в котором установить всем ошибкам в качестве сообщения пустую строку.

было бы круто понять как сделать, что бы не нужно было заранее знать название данного поля
Не очень понимаю чего ты хочешь, но есть возможность валидации массивов

Допустим я сделал в поле data-si-event=«change» data-si-preset=«russian». А так же в системной настройке sendIt указал емейл по умолчанию. Как сделать, что бы при выполнении данного события не было отправки письма?
SendIt не отправляет письма, это делает хук email компонента FormIt. В формировании списка параметров всегда используется пресет по умолчанию, в котором присутствует данный хук.
    Ivan
    23 июня 2024, 21:12
    0
    Спасибо большое.

    У меня есть форма


    Пресеты


    Так вот. Если я меняю поле Имя, то всплывает ошибка, но класс не добавляется.
    так же отправляется письмо на указанный в стандартных настройках компонента емейл
      Ivan
      23 июня 2024, 21:14
      0
      хм, Письмо победил. Нужно указать hooks = ''
        Ivan
        23 июня 2024, 21:17
        0
        Так же вы пишите, что сообщений об успешной валидации не существует, но если я ввожу на русском языке в поле name, то выводится сообщение ФОРМА ОТПРАВЛЕНА.
        P. S. Добавил в пресет 'successMessage' => '', теперь сообщения нет. Ура
          Артур Шевченко
          23 июня 2024, 21:24
          +1
          Если я меняю поле Имя, то всплывает ошибка, но класс не добавляется.
          Это ошибка. В Версии 2.0.3 она будет исправлена.
            Ivan
            23 июня 2024, 21:26
            0
            Спасибо вам еще раз. На первый взгляд всего очень много, но если немного разобраться это очень круто)
        Ivan
        23 июня 2024, 21:32
        0
        Что бы убрать ошибку при проверке конкретно поля сделал так
        document.addEventListener('si:send:error', (e) => {
                const { action, target, result, headers, Sending } = e.detail;
                
                if (target.tagName == 'INPUT') {
                    Sending.error = () => {};
                }
            })
          Артур Шевченко
          23 июня 2024, 21:35
          0
          Я загрузил обновлённую версию в modstore
            Ivan
            23 июня 2024, 21:37
            0
            Пока может какую-то проверку проходит…
            Артур Шевченко
            23 июня 2024, 21:37
            +1
            Лучше так
            document.addEventListener('si:send:error', (e) => {
                    const { action, target, result, headers, Sending } = e.detail;
                    
                    if (target.tagName == 'INPUT') {
                        result.data.errors = {};
                    }
                })
              Ivan
              23 июня 2024, 21:37
              0
              Пока может какую-то проверку проходит…
                Ivan
                23 июня 2024, 21:40
                0
                Пустой комментарий
                  Артур Шевченко
                  23 июня 2024, 21:41
                  0
                  Это я ошибся. 2.0.4 следующая версия
                    Ivan
                    23 июня 2024, 21:45
                    0
                    Обновил. К сожалению не работает. Кеш сбрасывал и в админке и в браузере
                      Артур Шевченко
                      23 июня 2024, 21:56
                      0
                      Что именно не работает?
                        Ivan
                        23 июня 2024, 21:57
                        0
                        У поля не появляется класс
                          Артур Шевченко
                          23 июня 2024, 21:59
                          0
                          А этот код есть
                          document.addEventListener('si:send:error', (e) => {
                                  const { action, target, result, headers, Sending } = e.detail;
                                  
                                  if (target.tagName == 'INPUT') {
                                      result.data.errors = {};
                                  }
                              })
                            Ivan
                            23 июня 2024, 22:01
                            0
                            Удалял — все равно не появляется
                              Ivan
                              23 июня 2024, 22:01
                              0
                              Если у вас есть время, то я могу дать доступ в админку, написав вам в телеграм
              Сергей Карпович
              30 июня 2024, 10:06
              0
              Подскажите как показать уведомление только при отправке форм с определенным классом:

              Вот так запускаю всплывашку для всех форм, но нужно только для форм с классом form_post
              document.addEventListener('si:send:success', (e) => {
                  const { action, target, result, headers, Sending } = e.detail;
                  Sending.success = (result, target) => {
                      Fancybox.close([{ src: "#popup" }]);
                      Fancybox.show([{ src: "#success-message", type: "inline" }]);
                  }
              })
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              23