Skip to main content

Кастомные валидаторы

Если стандартных проверок недостаточно, создайте собственный валидатор. Достаточно объявить тип с методами Validate(string) error и Description() string.

Пошаговый пример

Допустим, нужно проверить SKU вида CAT-000123:
Использование:

Сообщения об ошибках

  • Validate — короткое сообщение о проблеме (например, «Нужен чётный номер»).
  • Description — общие требования. Ziva показывает его под полем ввода, чтобы пользователь сразу видел формат.

Повторное использование

Сложные правила можно собрать из нескольких валидаторов:
Теперь можно комбинировать встроенные проверки и свои собственные:

Валидация с внешними сервисами

Если проверка требует обращения к API или базе данных, используйте FuncTask сразу после InputTask:
Такой подход позволяет оставить интерфейс отзывчивым и не блокировать ввод.

Советы

  • Старайтесь писать позитивные подсказки: «Используйте формат AAA-000000», а не «Нельзя вводить …».
  • Если правило длинное, выводите краткое сообщение в Validate, а подробности — в Description.
  • Используйте WithAllowEmpty(true) вместе с кастомными валидаторами, если поле не обязательно.
  • Покрывайте критичные правила юнит-тестами — валидатор это обычный Go-код.
Дальше изучите список встроенных валидаторов и комбинируйте их с собственными правилами.