Перейти к содержимому
FormFlow

Превратите длинную Форму в Шаги, не меняя конечную точку

Шаги делят длинную Форму на экраны, не трогая конечную точку: один POST по-прежнему несёт все поля, разрыв едет вместе с полем под ним, а Форма откатывается к одной странице.

Эта статья переведена машинным способом. Читать оригинал на английском

A dark FormFlow plate showing a multi-step Form folding into one flat Form and one POST.

Длинная Форма — это одна страница вопросов, и именно на одной странице люди уходят. Шаги делят её на экраны. Чего они не делают — не меняют конечную точку: Форма по-прежнему отправляется один раз, со всеми полями, на адрес, который уже назван в вашей разметке.

Шаг — это решение о представлении

Шаг — именованная группа полей Формы, которая показывается Отправителю по одному экрану за раз. Ни приём, ни квота, ни оценка спама, ни хранение не меняются, когда Форма разбита на несколько: судья получает то же тело, что и раньше, а одна Отправка остаётся одной учтённой отправкой.

Это весь контракт, поэтому добавление Шага — изменение представления, а не вашей интеграции. Адрес в вашем HTML, имена полей в разметке и число Отправок в вашем тарифе остаются на месте. Шаги доступны на платных тарифах.

Разрыв принадлежит полю под ним

В конструкторе разрыв Шага — это метка на поле, которое открывает следующий Шаг, то же самое, что линия, проведённая над этим полем. Он едет вместе с полем, поэтому перетаскивание поля перемещает и разрыв. Разрыв Шага — не разделитель, брошенный между вопросами; это свойство одного поля, и чтение списка полей сверху вниз — это чтение порядка Шагов.

Отсюда два следствия. Перестановка полей переставляет Шаги, поэтому полюбившийся Шаг может быть поглощён тем, что выше. А пустой Шаг закрывается: FormFlow не хранит экран, на котором ничего нет.

Один POST несёт все поля

Форма рисует один Шаг за раз, но браузер по-прежнему отправляет один запрос. Всё, что ответил Отправитель, приходит вместе, с ключами имён полей из схемы Формы. Справочник конечной точки — в /docs/api: один POST, одно тело, один ответ.

curl -X POST https://formflow.digital/api/v1/f/ff_live_example \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Lena Ortiz",
    "email": "lena@example.com",
    "company": "Ortiz Studio",
    "budget": "5000",
    "brief": "A one-page site, live in June."
  }'

Пять полей, три Шага, один запрос. Нет частичной Отправки, которую нужно сводить между экранами, нет второго запроса для повтора и нет квитанции на каждый Шаг. Запрос не прошёл — попытка не прошла; прошёл — у FormFlow одна Отправка, и он судит её один раз.

Когда Форма рисуется плоско

Форма рисуется со всеми полями на одной странице под одной кнопкой отправки в трёх случаях: она не объявляет Шагов, тариф Команды их больше не разрешает, или браузер Отправителя не выполняет JavaScript. Плоская отрисовка — не запасной вариант, добавленный потом; это то, вокруг чего Шаги служат оболочкой.

Тот, у кого скрипты отключены, получает те же поля, те же имена и ту же кнопку отправки — просто на одной странице. Форма не сломана, она просто одна страница. Потеря Шагов из-за смены тарифа — тоже не миграция: Форма хранит Шаги в своей схеме, рисуется плоско, пока разрешения нет, и снова рисует их, если оно вернётся.

Где Шаги резки

Шаги и не прячут схему. Всё, что вы объявили, входит в контракт, показывает это экран или нет, и мнение браузера о том, какие поля видны, никогда не решает, что будет принято. Если поле должно отсутствовать, а не просто быть невидимым, не объявляйте его.

Запись Списка изменений для v1.0.0 фиксирует фразу, на которой всё это держится: направьте любую HTML-форму на FormFlow, или используйте размещённую страницу либо встраивание, и он получает, фильтрует, хранит и передаёт каждую отправку. Шаги переставляют середину этой фразы. Они её не удлиняют.