Overview
Узнайте, как настроить динамические опции для выпадающих списков и полей множественного выбора в ChronoForms. Руководство охватывает подготовку массива опций с помощью PHP-действия для статических/сложных данных или действия Read Data для опций из базы данных. Объясняется настройка Источника данных, Пути к значению опции и Текста опции, включая обновления для v8.0.47 для работы с одномерными массивами.
Вот как настроить поведение "Динамические опции" для выпадающих списков и полей множественного выбора в ChronoForms v8. Такая же настройка может быть использована для ChronoForms v7.
Начните с подготовки вашего массива опций. Вы можете сделать это, используя:
- PHP-действие, если у вас статический или сложный источник данных
- Действие Read Data, если ваши опции поступают напрямую из базы данных
Настройки PHP-действия

PHP-действия будут возвращать массив со значениями и текстами опций.
Затем включите поведение "Динамические опции" в вашем выпадающем списке и установите Источник данных как {var:php25}, что в данном случае является возвращаемым значением от PHP-действия с именем "php25" (действие, которое мы только что создали).
Также нам нужно будет установить Путь к значению опции: {row:value} и Текст опции: {row:text}, так как это путь к значениям и текстам в нашем массиве:

Вы можете добавить любые опции по умолчанию в поле "Опции", они появятся перед динамическими опциями.
Настройки Read Data

И настройки "Динамических опций" вашего выпадающего списка изменятся соответствующим образом:

- Мы используем результаты действия с именем "read_users" в качестве Источника данных.
- Мы используем значение id строки для значения опции. Каждая строка, приходящая из таблицы users, будет иметь значение столбца "id".
- Мы используем значение username строки для текста опции. Каждая строка, приходящая из таблицы users, будет иметь значение столбца "username".
Обновление v8.0.47
Если у вас ChronoForms v8.0.47 или новее, вы также можете использовать {row:key} и {row:value}, если ваши значения представляют собой одномерный массив (например, поступающий из JSON-массива в базе данных):

В этом случае {row:key} будет содержать числовой индекс значения, а {row:value} будет содержать само значение.

Comments: