API и события
Обновлено
JavaScript API
После загрузки скрипта доступен объект window.RequestsQuiz. Методы работы с состоянием вызывайте после инициализации нужной формы.
| Метод | Назначение |
|---|---|
goToStep(formId, stepIndex) |
Переход к шагу по индексу; проверку заполнения текущего шага не запускает |
getCurrentStep(formId) |
Индекс текущего шага; если квиз не найден, возвращает 0 |
getTotalSteps(formId) |
Количество шагов; если квиз не найден, возвращает 0 |
Индексы начинаются с нуля: индекс 1 означает второй шаг. Переход за пределы существующих шагов игнорируется. Эти методы не отправляют заявку; переход через интерфейс с проверкой выполняет кнопка «Далее».
События
Плагин отправляет события на document:
| Событие | Данные event.detail |
Когда возникает |
|---|---|---|
requests:quiz:init |
formId, totalSteps |
После построения интерфейса и показа первого шага |
requests:quiz:step |
formId, step, totalSteps, stepTitle |
При показе шага, включая первый показ во время инициализации |
Чтобы получать события первого показа, зарегистрируйте слушатели до инициализации квиза.
Пример подключения обработчика и вызовов API:
document.addEventListener('requests:quiz:init', function (event) {
if (String(event.detail.formId) !== '3') return;
console.log('Всего шагов:', window.RequestsQuiz.getTotalSteps('3'));
console.log('Текущий индекс:', window.RequestsQuiz.getCurrentStep('3'));
});
document.addEventListener('requests:quiz:step', function (event) {
if (String(event.detail.formId) !== '3') return;
console.log('Показан шаг:', event.detail.step + 1, event.detail.stepTitle);
});
// После инициализации: перейти на второй шаг без проверки текущего.
window.RequestsQuiz.goToStep('3', 1);Внешний счётчик можно подключить своим обработчиком. Плагин сам не задаёт цели аналитики и не настраивает отправку событий во внешние сервисы. В его событиях передаются ID формы и сведения о шаге, включая заголовок; ответы посетителя в detail не включены.
PHP API
Для кода, выполняемого в окружении Webasyst с установленным и включённым плагином, доступен класс requestsQuizformsViewHelper.
| Метод | Результат |
|---|---|
isQuiz($form_id) |
Проверка существования формы и режима quiz |
getQuizConfig($form_id) |
Массив параметров квиза; для отсутствующей или обычной формы — пустой массив |
renderQuiz($form_id, $options = []) |
HTML встроенного квиза |
renderModal($form_id, $options = []) |
HTML квиза в окне |
render($form_id, $options = []) |
Короткое имя renderQuiz() |
modal($form_id, $options = []) |
Короткое имя renderModal() |
wa('requests');
$form_id = 3;
if (requestsQuizformsViewHelper::isQuiz($form_id)) {
$config = requestsQuizformsViewHelper::getQuizConfig($form_id);
}Ключи конфигурации: showProgress, showStepNumbers, allowBack, validateOnStep, animation, buttonNext, buttonBack, buttonSubmit.
Статические renderQuiz() и renderModal() выбрасывают исключение Form is not a quiz, если форма отсутствует или её режим отличается от quiz. Их короткие имена ведут себя так же. Для шаблонов темы используйте хелпер плагина с проверкой version(): он выполняет полный вывод через приложение, а для неподходящего режима возвращает пустую строку.
Внешние подключения
У «Квиз-форм» нет собственных настроек API-ключей, webhook, CRM, cron или CLI-команд. MCP-инструменты в плагине не зарегистрированы. Передачу заявки выполняет приложение «Заявки»; внешние подключения следует настраивать средствами приложения и соответствующих плагинов.