Скрытое поле
Скрытое поле везёт с формой значение, которого человек не видит и не правит: идентификатор записи, текущий отбор, токен. На экране его нет, поэтому здесь показана разметка, которую печатает кит.
Когда использовать#
- Форма должна вернуть серверу то, что он сам отдал: идентификатор записи, номер шага, текущий отбор.
- Поиск должен сохранить остальные параметры адреса: форма отбора везёт их скрытыми полями.
- Нужен явный «сброс» признака: пустое значение тоже отправляется.
Не прячьте значение, которое человек должен видеть, — покажите его заблокированным полем формы или полем из конфига. Не доверяйте скрытому полю права и цены: его правит кто угодно в инструментах браузера, и сервер обязан проверять всё заново.
В дереве холста скрытое поле рождается с именем и значением позицией и ложится в форму ребёнком, рядом с кнопкой (см. Язык узлов).
Узлом холста — словами
<form method="post" action="/проекты/альфа/участники"><input type="hidden" name="_csrf" value="т0кен"><input type="hidden" name="участник" value="17"><button type="submit" class="button button--danger button--sm"><span>Исключить</span></button></form>HTML = Кит.Форма("/проекты/альфа/участники",
Кит.СкрытоеПоле("участник", "17"),
Кит.Кнопка("Исключить").Опасная().Малая()).Токен("т0кен").Рендер();Имя и значение#
Имя обязательно: поле без name формой не отправляется, и такая разметка молча теряет данные. Значение приводится к строке; имя и значение экранируются.
Имя и значение
<input type="hidden" name="проект" value="main">HTML = Набор.СкрытоеПоле().Отрисовать(
Новый Структура("Имя, Значение", "проект", "main"));Пустое значение#
Атрибут value печатается и для пустого значения. Пустое значение законно: так форма сообщает серверу «признак снят», а не «признака не было».
Пустое значение — сброс признака
<input type="hidden" name="включить" value="">HTML = Набор.СкрытоеПоле().Отрисовать(Новый Структура("Имя", "включить"));Гайдлайны#
Код
Скрытые = Новый Массив();
Скрытые.Добавить(Новый Структура("Имя, Значение", "проект", "main"));
HTML = Набор.ФормаОтбора().Отрисовать(Новый Структура("Действие, Метка, Кнопка, СкрытыеПоля",
"/документы", "Имя документа", "Найти", Скрытые));Код
Поля = Новый Массив();
Поля.Добавить(Новый Структура("Имя, Метка", "q", "Имя документа"));
Поля.Добавить(Новый Структура("Имя, Метка, Значение", "проект", "проект", "main"));
HTML = Набор.ФормаОтбора().Отрисовать(Новый Структура("Действие, Кнопка, Поля",
"/документы", "Найти", Поля));Код
HTML = Набор.Поле().Отрисовать(Новый Структура("Метка, Значение, Заблокировано",
"Каталог данных", "/var/lib/приложение", Истина))
+ Набор.Кнопка().Отрисовать("Создать проект");Код
HTML = Набор.СкрытоеПоле().Отрисовать(
Новый Структура("Имя, Значение", "каталог", "/var/lib/приложение"))
+ Набор.Кнопка().Отрисовать("Создать проект");Доступность#
- Скрытое поле не видно никому — ни глазу, ни скринридеру, ни клавиатуре. Всё, что человеку нужно знать, должно быть на экране отдельно.
Узлом холста#
На холсте скрытое поле — Кит.СкрытоеПоле(Имя, Значение): два параметра вместо структуры. Кладите его в форму.
Скрытое поле узлом дерева
<input type="hidden" name="проект" value="main">HTML = Кит.СкрытоеПоле("проект", "main").Рендер();Модель#
Поля модели — из комментария в исходнике компонента. Структура Имя, Значение — модель компонента строкой; узел холста берёт те же поля позицией.
СкрытоеПоле.Отрисовать()src/Классы/компоненты/СкрытоеПоле.os
Отрисовывает скрытое поле формы; имя и значение экранируются. Параметры: Модель - Структура - Имя (атрибут name, обязательно), Значение (приводится к строке). Возвращаемое значение: Строка - фрагмент <input type="hidden">. Кидается исключением, если Имя пусто.
Кит.СкрытоеПоле()src/Классы/холст/Кит.os
Скрытое поле формы. Параметры: Имя - Строка - имя поля. Значение - Строка - значение. Возвращаемое значение: ЭлементЭкрана