Alterator/module/types
Материал из ALT Linux Wiki
(→Изменения в интерфейсе) |
(→Типы параметров) |
||
Строка 1: | Строка 1: | ||
- | === | + | === Автоматическая проверка данных === |
- | Иногда необходимо производить валидацию введённых пользователем данных. Можно это делать в бакенде, но гораздо удобнее | + | Иногда необходимо производить валидацию введённых пользователем данных. Можно это делать вручную в бакенде, но гораздо удобнее воспользоваться автоматической проверкой типов, выполняемой альтератором при передаче данных в бакенд. |
==== Изменения в бакенде ==== | ==== Изменения в бакенде ==== | ||
- | Делается это следующим образом. В бакенде добавляется ответ на запрос | + | Делается это следующим образом. В бакенде добавляется ответ на запрос "type". В нем перечисляются параметры, с которыми работает бакенд, и их типы. Для формирования правильного ответа стоит воспользоваться стандартной библиотекой, например для бакенда на shell объявление типов будет выглядить следующим образом. |
<pre> | <pre> | ||
Строка 57: | Строка 57: | ||
... | ... | ||
</pre> | </pre> | ||
+ | |||
+ | ==== Список типов ==== | ||
+ | {| class="tiles" | ||
+ | |- | ||
+ | !название типа || комментарии | ||
+ | |- | ||
+ | |boolean|| | ||
+ | |- | ||
+ | |date|| | ||
+ | |- | ||
+ | |hostname-list|| | ||
+ | |- | ||
+ | |hostname|| | ||
+ | |- | ||
+ | |ipv4-address-list|| | ||
+ | |- | ||
+ | |ipv4-address|| | ||
+ | |- | ||
+ | |ipv4-network|| | ||
+ | |- | ||
+ | |iso-3166-alpha-2|| | ||
+ | |- | ||
+ | |system-account-name|| | ||
+ | |- | ||
+ | |tcp-port|| | ||
+ | |- | ||
+ | |time|| | ||
+ | |} |
Версия 17:54, 24 октября 2008
Содержание |
Автоматическая проверка данных
Иногда необходимо производить валидацию введённых пользователем данных. Можно это делать вручную в бакенде, но гораздо удобнее воспользоваться автоматической проверкой типов, выполняемой альтератором при передаче данных в бакенд.
Изменения в бакенде
Делается это следующим образом. В бакенде добавляется ответ на запрос "type". В нем перечисляются параметры, с которыми работает бакенд, и их типы. Для формирования правильного ответа стоит воспользоваться стандартной библиотекой, например для бакенда на shell объявление типов будет выглядить следующим образом.
. alterator-sh-functions on_message() { case "$in_action" in type) write_type_item a ipv4-address write_type_item b tcp-port ;; read) ... esac }
В примере выше объявлено что параметр 'a' будет иметь тип 'IP адрес', 'b' - 'TCP порт' и теперь пользователь не сможет передать в бакенд в качестве 'a' что-либо отличное IP адреса и в качестве 'b' что-либо отличное от целого числа находящегося в определённом диапазоне.
Изменения в интерфейсе
На этом возможности системы типов не исчерпываются. Предположим, что пользователь ввёл-таки неправильное значение в поле, соотвествующее параметру 'a'. Он увидит следующее сообщение об ошибке:
a: недопустимый IP-адрес
Однако никакого 'a' на его экране не наблюдается. В каком именно поле случилась ошибка?
Система типов alterator в состоянии справиться с этим. Для этого всего-лишь необходимо, чтобы у названия поля был задан атрибут 'name' содержащий имя параметра бакенда, которому соответвует это поле.
Пример для qt:
... (label text "Field" name "a") (edit name "a") ...
Теперь в случае ошибки, пользователь увидит следующее сообщение:
Field: недопустимый IP-адрес
Аналогичный пример для html:
.... <span name="a" translate="_">Field:</span> <input type="text" name="a"/> ...
Список типов
название типа | комментарии |
---|---|
boolean | |
date | |
hostname-list | |
hostname | |
ipv4-address-list | |
ipv4-address | |
ipv4-network | |
iso-3166-alpha-2 | |
system-account-name | |
tcp-port | |
time |