oscript-ui
oscript-ui

Скрытое поле

Скрытое поле везёт с формой значение, которого человек не видит и не правит: идентификатор записи, текущий отбор, токен. На экране его нет, поэтому здесь показана разметка, которую печатает кит.

Когда использовать#

  • Форма должна вернуть серверу то, что он сам отдал: идентификатор записи, номер шага, текущий отбор.
  • Поиск должен сохранить остальные параметры адреса: форма отбора везёт их скрытыми полями.
  • Нужен явный «сброс» признака: пустое значение тоже отправляется.

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

В дереве холста скрытое поле рождается с именем и значением позицией и ложится в форму ребёнком, рядом с кнопкой (см. Язык узлов).

Узлом холста — словами

<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

Скрытое поле формы.

Параметры:
 Имя      - Строка - имя поля.
 Значение - Строка - значение.

Возвращаемое значение:
 ЭлементЭкрана