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

Сделать схему формы обязательной со строгим режимом

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

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

A dark FormFlow plate contrasting an advisory schema with Strict mode, where the Form's field rules become authoritative.

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

Что меняется, когда вы его включаете

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

При включённом строгом режиме схема становится контрактом в обе стороны. Объявленное поле, которое не пришло или не удовлетворило своим правилам, отклоняется. Необъявленный ключ, который пришёл, тоже отклоняется — те же ворота, та же ошибка с ключом поля и сообщение о том, что поле не объявлено. В этой симметрии весь смысл: строгая форма не может тихо накопить ответы, которых не запрашивала. Строгий режим появился в v1.0.0, а справочник API описывает отказ, который он возвращает.

Правила поля берутся из закрытого словаря

Кроме того, строгий режим — единственный режим, в котором применяются правила поля. Правило поля — дополнительное ограничение на одно поле, сверх того, что уже подразумевает его тип, и оно выбирается из списка, который FormFlow поставляет и ограничивает этим типом. Вы выбираете из списка; вы никогда не пишете правило. Форма не может попросить FormFlow выполнить проверку, которую FormFlow не написал.

Тип поля

Доступные правила

Границы

Текст

Только буквы; Буквы и цифры; Буквы, цифры, дефисы и подчёркивания; Только простой ASCII; Строчные; Прописные; UUID; ULID; IP-адрес; MAC-адрес; Шестнадцатеричный цвет

минимальная и максимальная длина

Многострочный текст

Только простой ASCII; Допустимый JSON

минимальная и максимальная длина

Число

Целое число

минимальное и максимальное значение

Эл. почта, Телефон

нет

минимальная и максимальная длина

Список, Один вариант

нет

нет

Две вещи об этой таблице. Граница — целое число, до шести цифр. А тип со списком вариантов не принимает правил вовсе: его список вариантов уже и есть ограничение, и строгий режим судит каждый ответ по нему.

Где строгий режим не ваш выбор

Объявленное поле файла обязательно на каждой форме, включён строгий режим или нет. Его проверяют на тип, размер и количество каждый раз, и оно жёстко отклоняет. Это сделано намеренно: загрузка — это байты на диске, поэтому её нельзя оставлять настройке, которая по умолчанию выключена. Другое исключение — оцениваемая форма: форма с ключом ответов всегда в строгом режиме и может быть только размещённой страницей, потому что встроенная разметка не может честно ни показать её, ни оценить.

Решайте по доказательствам, а не по нервам

Прежде чем включать его, прогоните кандидатную конфигурацию по истории самой формы. FormFlow хранит и отправки, которые форма приняла, и отклонённые отправки, которые она отвергла, поэтому прогон может показать, чего будет стоить изменение, прежде чем кто-то за него заплатит. Именно поэтому строгий режим можно включить поздно, когда у формы уже есть трафик.

Вторая причина для спокойствия: отказ — не невидимая потеря. Отклонённая отправка хранится как запись, с которой можно что-то сделать, не доставляется, не становится учтённой отправкой и может быть восстановлена, как только настройку исправят. Строгий режим повышает ставки в игре «сделай схему правильно»; он не делает ошибку постоянной.

Ограничения, которые стоит знать

  • По умолчанию выключен. Если вы не помните, что включали его, он выключен.

  • Он судит только ответы. Список разрешённых источников и структура запроса проверяются на каждой форме, строгая она или нет.

  • Объявленные поля файлов проверяются в любом случае, поэтому строгий тест, прошедший без загрузки, ничего не доказывает о файле.

  • Правила поля действуют только в строгом режиме. Вывод формы из строгого режима молча прекращает применять каждое выбранное для неё правило.

  • Оцениваемая форма не может выйти из строгого режима и не может быть встроена, поэтому планируйте её схему до первой отправки.