[SendIt] Несколько полезных нововведений в версии 1.1.2
Приветствую, коллеги. По итогам использования компонента добавил несколько новых возможностей, для повышения удобства и функциональности.
1. Отправка по клику
Вы можете добавить любому html-элементу внутри тэга form атрибуты data-si-event=«click» и data-si-preset=«название пресета» после этого форма будет отправляться по клику на этот элемент. Этот функционал можно использовать, например, при подтверждении номера телефона, т.е. после ввода номера, пользователь нажимает кнопку, отправляется форма, вы отправляете ему код подтверждения и далее по схеме.
ВАЖНО! Отпраляя данные на события click, change, input, имейте ввиду, что для этих событий не действуют ограничения на количество отправок и работает только проверка токена. В связи с этим рекомендую НЕ отправлять почту на эти события.
2. Убрал стили по умолчанию
Они ломали вёрстку. Однако, если будете использовать многоэтапные формы, необходимо определить стили для класса v_hidden.
3. Поместил токен в сессию
По задумке это должно повысить эффективность защиты от спама. В частности, от прямых запросов через CURL.
4. Создал сниппет RenderForm
Мой инновационный подход с выносом параметров сниппета в файл не всем пришёлся по душе, поэтому для любителей вызвать сниппет добавил RenderForm. Пример вызова
5. Атрибут data-si-nosave
В компоненте реализован механизм автоматического сохранения введённых пользователем данных, но иногда он мешает. Чтобы для конкретной формы отключить сохранение, добавьте ей атрибут data-si-nosave=«1»
1. Отправка по клику
Вы можете добавить любому html-элементу внутри тэга form атрибуты data-si-event=«click» и data-si-preset=«название пресета» после этого форма будет отправляться по клику на этот элемент. Этот функционал можно использовать, например, при подтверждении номера телефона, т.е. после ввода номера, пользователь нажимает кнопку, отправляется форма, вы отправляете ему код подтверждения и далее по схеме.
ВАЖНО! Отпраляя данные на события click, change, input, имейте ввиду, что для этих событий не действуют ограничения на количество отправок и работает только проверка токена. В связи с этим рекомендую НЕ отправлять почту на эти события.
2. Убрал стили по умолчанию
Они ломали вёрстку. Однако, если будете использовать многоэтапные формы, необходимо определить стили для класса v_hidden.
3. Поместил токен в сессию
По задумке это должно повысить эффективность защиты от спама. В частности, от прямых запросов через CURL.
4. Создал сниппет RenderForm
Мой инновационный подход с выносом параметров сниппета в файл не всем пришёлся по душе, поэтому для любителей вызвать сниппет добавил RenderForm. Пример вызова
{'RenderForm' | snippet: [
'tpl' => '@FILE chunks/forms/exampleForm.tpl',
'presetName' => 'snippet_form',
'extends' => 'default',
'redirectTo' => 0,
'redirectTimeout' => 3000,
'clearFieldsOnSuccess' => 1,
'fieldNames' => 'age==Возраст,name==Имя,phone==Телефон,email==Почта',
'successMessage' => 'Форма отправлена!',
'validationErrorMessage' => 'Исправьте ошибки!'
]}Кроме первых двух, параметры такие же как в FormIt и AjaxForm. presetName — это ключ для записи параметров в сессию, поэтому, если на одной странице будет несколько вызовов сниппета с одинаковым ключом, параметры будут перезаписаны последним вызовом. Вы так же можете использовать наследование из файла с пресетами через параметр extends.5. Атрибут data-si-nosave
В компоненте реализован механизм автоматического сохранения введённых пользователем данных, но иногда он мешает. Чтобы для конкретной формы отключить сохранение, добавьте ей атрибут data-si-nosave=«1»
Комментарии: 27
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
При использовании компонента постоянно выскакивает ошибка
/var/www/u2436897/data/www/..............ru/core/cache/includes/elements/modx/revolution/modplugin/11.include.cache.php 14 PHP warning: Undefined array key «SendIt»
$cookies = !empty($_COOKIE['SendIt'])? json_decode(!empty($_COOKIE['SendIt']),1): [];
вырубает сайт напрочь Fatal error: Uncaught TypeError: array_merge():
А вот такая
$cookies = !empty($_COOKIE['SendIt'])? json_decode($_COOKIE['SendIt'],1): [];
Вызывает кучу ошибок при отправке формы с сайта
20.01.2024 13:49:40 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 94
PHP warning: Undefined array key «extends»
20.01.2024 13:49:40 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 98
PHP warning: Undefined array key «sendGoal»
20.01.2024 13:49:40 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 99
PHP warning: Undefined array key «counterId»
20.01.2024 13:49:40 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 284
PHP warning: Undefined array key «comment»
20.01.2024 13:49:40 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 113
PHP warning: Undefined array key «fieldNames»
20.01.2024 13:49:40 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 117
PHP warning: Undefined array key «attachFilesToEmail»
20.01.2024 13:49:40 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 351
PHP warning: Trying to access array offset on value of type null
20.01.2024 13:49:40 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 362
PHP warning: Undefined array key «snippet»
20.01.2024 13:49:40 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/pdotools/vendor/fenom/fenom/src/Fenom/Template.php(487): eval()'d code 7
PHP warning: Undefined array key «fieldsAliases»
20.01.2024 13:49:41 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 427
PHP warning: Undefined array key «placeholderPrefix»
20.01.2024 13:49:41 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 441
PHP warning: Undefined array key «fieldNames»
20.01.2024 13:49:41 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 456
PHP warning: Undefined array key «redirectTimeout»
20.01.2024 13:49:41 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 457
PHP warning: Undefined array key «redirectTo»
20.01.2024 13:49:41 ERROR /var/www/u2436897/data/www/maxhub.ru/core/components/sendit/model/sendit/sendit.class.php 458
PHP warning: Undefined array key «redirectTo»
Сделал вот так одно окно закрывается после отправки.
Делаю еще для второго окна
Но так не срабатывает.
Вопрос возник. В чанке письма siDefaultEmail, есть заголовок:
Вопрос: откуда берутся данные в этот параметр {$_pls['savedForm.form']}?
Из коробки с минимальными настройками и стандартным чанком письма, в заголовке ничего не выводится.
В пресете formName есть. В форме data-si-form есть. Чанк письма стандартный. Но ничего не передается в плейсхолдер {$_pls['savedForm.form']}
Версия SendIt — 1.1.2-pl