Сделать схему формы обязательной со строгим режимом
Строгий режим по умолчанию выключен, поэтому схема направляет генерацию, а не судит ответы. Включите его для формы — и необъявленный ключ станет отказом; поля файлов при этом обязательны в любом случае.
Эта статья переведена машинным способом. Читать оригинал на английском

Строгий режим — это переключатель на одной форме, и при создании формы он выключен. Выключенное состояние — не упущение: почти все формы начинают с него, потому что форма, не получившая ни одной отправки, ещё не знает своей формы в буквальном смысле. Переключатель меняет то, для кого существует схема.
Что меняется, когда вы его включаете
При выключенном строгом режиме схема направляет генерацию. Она решает, какие поля показывает предпросмотр конструктора и что рисует сгенерированный компонент, и по ней FormFlow учится, когда предлагает принять поле, которое увидел в прибытии. Но ответы она не судит. Лишний ключ — не нарушение: он приходит как ответ.
При включённом строгом режиме схема становится контрактом в обе стороны. Объявленное поле, которое не пришло или не удовлетворило своим правилам, отклоняется. Необъявленный ключ, который пришёл, тоже отклоняется — те же ворота, та же ошибка с ключом поля и сообщение о том, что поле не объявлено. В этой симметрии весь смысл: строгая форма не может тихо накопить ответы, которых не запрашивала. Строгий режим появился в v1.0.0, а справочник API описывает отказ, который он возвращает.
Правила поля берутся из закрытого словаря
Кроме того, строгий режим — единственный режим, в котором применяются правила поля. Правило поля — дополнительное ограничение на одно поле, сверх того, что уже подразумевает его тип, и оно выбирается из списка, который FormFlow поставляет и ограничивает этим типом. Вы выбираете из списка; вы никогда не пишете правило. Форма не может попросить FormFlow выполнить проверку, которую FormFlow не написал.
Тип поля | Доступные правила | Границы |
|---|---|---|
Текст | Только буквы; Буквы и цифры; Буквы, цифры, дефисы и подчёркивания; Только простой ASCII; Строчные; Прописные; UUID; ULID; IP-адрес; MAC-адрес; Шестнадцатеричный цвет | минимальная и максимальная длина |
Многострочный текст | Только простой ASCII; Допустимый JSON | минимальная и максимальная длина |
Число | Целое число | минимальное и максимальное значение |
Эл. почта, Телефон | нет | минимальная и максимальная длина |
Список, Один вариант | нет | нет |
Две вещи об этой таблице. Граница — целое число, до шести цифр. А тип со списком вариантов не принимает правил вовсе: его список вариантов уже и есть ограничение, и строгий режим судит каждый ответ по нему.
Где строгий режим не ваш выбор
Объявленное поле файла обязательно на каждой форме, включён строгий режим или нет. Его проверяют на тип, размер и количество каждый раз, и оно жёстко отклоняет. Это сделано намеренно: загрузка — это байты на диске, поэтому её нельзя оставлять настройке, которая по умолчанию выключена. Другое исключение — оцениваемая форма: форма с ключом ответов всегда в строгом режиме и может быть только размещённой страницей, потому что встроенная разметка не может честно ни показать её, ни оценить.
Решайте по доказательствам, а не по нервам
Прежде чем включать его, прогоните кандидатную конфигурацию по истории самой формы. FormFlow хранит и отправки, которые форма приняла, и отклонённые отправки, которые она отвергла, поэтому прогон может показать, чего будет стоить изменение, прежде чем кто-то за него заплатит. Именно поэтому строгий режим можно включить поздно, когда у формы уже есть трафик.
Вторая причина для спокойствия: отказ — не невидимая потеря. Отклонённая отправка хранится как запись, с которой можно что-то сделать, не доставляется, не становится учтённой отправкой и может быть восстановлена, как только настройку исправят. Строгий режим повышает ставки в игре «сделай схему правильно»; он не делает ошибку постоянной.
Ограничения, которые стоит знать
По умолчанию выключен. Если вы не помните, что включали его, он выключен.
Он судит только ответы. Список разрешённых источников и структура запроса проверяются на каждой форме, строгая она или нет.
Объявленные поля файлов проверяются в любом случае, поэтому строгий тест, прошедший без загрузки, ничего не доказывает о файле.
Правила поля действуют только в строгом режиме. Вывод формы из строгого режима молча прекращает применять каждое выбранное для неё правило.
Оцениваемая форма не может выйти из строгого режима и не может быть встроена, поэтому планируйте её схему до первой отправки.