Overview
В этом руководстве объясняется, как реализовать динамический выпадающий список в Chronoforms8, где параметры обновляются на основе изменений другого поля. Оно охватывает настройку триггера события, конфигурацию расширенного слушателя в выпадающем списке и создание отдельной страницы со скриптом PHP для предоставления новых параметров в формате JSON. Процесс гарантирует, что выпадающий список обновляется новыми данными, такими как случайный список столиц, при каждом изменении значения поля-триггера.
Динамический выпадающий список — это поле выбора, которое обновляет свои параметры при изменении другого поля. В этом руководстве мы покажем, как это сделать в Chronoforms8.
Сначала нам нужно настроить триггер события в поле, которое будет запускать изменение параметров:

Мы настраиваем триггер с именем "reloadoptions" при "Изменении значения" нашего поля.
Затем в настройках нашего выпадающего списка нам нужно настроить расширенный слушатель:

Имя триггера должно быть тем, которое мы настроили ранее — "reloadoptions". Действие должно быть "Загрузить параметры", а параметры действия — это псевдоним страницы, которая будет предоставлять новые параметры. В нашем случае у нас есть страница с именем "options".
Теперь нам нужно подготовить страницу "options" для получения запроса "Загрузить параметры" и возврата результатов в правильном формате:

Мы добавили новую страницу и установили псевдоним "options", а группу страниц — "options". Важно изменить группу страниц на что-то уникальное в форме, чтобы страница могла быть доступна независимо.
Внутри события загрузки страницы options у нас есть действие PHP для возврата результатов:

В нашем случае у нас есть скрипт PHP для возврата случайного списка столиц:
$cities = [
"New York", "London", "Tokyo", "Paris", "Sydney",
"Toronto", "Berlin", "Rome", "Shanghai", "Istanbul",
"Mumbai", "São Paulo", "Mexico City", "Cape Town", "Buenos Aires",
"Moscow", "Singapore", "Los Angeles", "Bangkok", "Jakarta"
];
// Перемешиваем массив городов для случайного порядка
shuffle($cities);
// Извлекаем 5 случайных городов
$randomCities = array_slice($cities, 0, 5);
// Создаем массив пар ключ-значение
$randomItems = [];
foreach ($randomCities as $city) {
$randomItems[] = [
'text' => $city,
'value' => $city
];
}
// Выводим результат в формате JSON
echo json_encode($randomItems, JSON_PRETTY_PRINT);
Обратите внимание, что список закодирован в JSON, и это массив массивов. Каждый внутренний массив представляет собой параметр и имеет 2 ключа: "text" для текста параметра и "value" для значения параметра.
Вот и все. Теперь при изменении поля-триггера (при изменении значения) выпадающий список получит триггер, вызовет страницу "options" и получит обновленный список параметров.

Comments: