SendIt 1.0.4 - отправка запросов без формы и рекурсивное наследование параметров.

Приветствую! Сегодня выпустил обновление для компонента SendIt. Теперь можно в рамках одного файла наследовать сколько угодно пресетов и отправлять данные на сервер без создания скрытых форм. Подробности ниже.

Рекурсивное наследование
Имя вот такие пресеты
<?php

return [
    'default' => [
        'validate' => 'phone:required,age:required,name:required,email:email:required,politics:checkbox:required',
    ],
    'onestepform' => [
        'extends' => 'default',
        'redirectTo' => 0,
        'redirectTimeout' => 3000,
        'clearFieldsOnSuccess' => 1,
        'fieldNames' => 'age==Возраст,name==Имя,phone==Телефон,email==Почта',
        'successMessage' => 'Форма отправлена!',
        'validationErrorMessage' => 'Исправьте ошибки!',
    ],
    'custom' => [
        'extends' => 'onestepform',
        'snippet' => '@FILE snippets/test.php',
        'hooks' => '',
        'validate' => ''
    ],
]

при отправке формы с пресетом custom будет получен вот такой набор параметров
[
    [successMessage] => Форма отправлена!
    [hooks] => 
    [emailTpl] => siDefaultEmail
    [emailTo] => shev.art.v@yandex.ru
    [emailFrom] => noreply@sendit.art-sites.ru
    [formName] => Форма по умолчанию.
    [emailSubject] => Письмо с сайта sendit.art-sites.ru
    [extends] => onestepform
    [redirectTo] => 0
    [redirectTimeout] => 3000
    [clearFieldsOnSuccess] => 1
    [fieldNames] => age==Возраст,name==Имя,phone==Телефон,email==Почта
    [validationErrorMessage] => Исправьте ошибки!
    [validate] => 
    [snippet] => @FILE snippets/test.php
    [sendGoal] => 0
    [counterId] => 
]

Параметров больше, потому что к заданным в файле добавились ещё стандартные.

Отправка данных БЕЗ формы
Отправить данные можно так
document.addEventListener('si:init', (e) => {
    SendIt?.setComponentCookie('sitrusted', '1');
    SendIt?.Sending?.prepareSendParams(document, 'custom');
})

Событие si:init можно заменить на любое нужное вам. Если будете использовать события, которые генерирует не пользователь, при получении ответа лучше установить sitrusted значение 0
document.addEventListener('si:send:after', (e) => {
    const {action, target, result, headers, Sending} = e.detail;

    if(result.somedata){
        SendIt?.setComponentCookie('sitrusted', '0');
    }
})
Надеюсь данные нововведения облегчат вам разработку!
Артур Шевченко
10 октября 2023, 22:10
modx.pro
729
+6
Поблагодарить автора Отправить деньги

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0