Платформа A2v10 довідкова система
EN


Шаблони. Валідатори

Валідатори - механізм, що забезпечує перевірку достовірності моделі. Зверніть увагу, что валідатори, як і все решта в шаблонах, пов'язуються з даними, а не з користувацьким інтерфейсом. Елементи керування самі відслідковують коректність даних і виводять відповідні повідомлення про помилки.

Об'єкт, що описує валідатори, являє собою звичайний об`єкт JavaScript. Імена властивостей являють собою шлях до елементу даних в моделі (до того об'єкту, перевірку якого потрібно виконати). Якщо в шляху до даних зустрічається масив, то відповідна властивість відмічається суфіксом []. Наприклад, валідатор до властивості Sum рядку документу буде мати ім'я Document.Rows[].Sum.

Синтаксис


Опис

Значенням валідатора може бути як один валідатор, так і масив валідаторів. Якщо це масив, то застосовуються всі валідатори з масива.

Кожен валідатор (єдиний, або елемент масива) може бути рядком, функцією, або об'єктом заданної структури. Основним видом валідатора є об'єкт. Решта значень - просто скороченй запис для об'єкта.

Властивості об'єкта валідатора

  • valid - рядок (стандартний валідатор) або функція перевірки.
  • async - необов'язково. Валідатор є асинхронним (див. нижче).
  • msg - повідомлення про помилку. Функція перевірки може повернути рядок, а не булеве значення. У цьому випадку значення цієї властивості ігнорується.
  • severity - серйозність помилки. За замовчуванням - 'error'. Впливає на зовнішній вигляд повідомлення і може бути використано в коді.
  • regExp - регулярний вираз для стандартного валідатора типу 'regExp'.
  • applyIf - функція, що визначає, чи потрібно застосовувати валідатор.

Стандартні валідатори

Якщо значення властивості valid - рядок, то це стандартний валідатор. Можливі значення:

  • 'notBlank' - значення не пусте.
  • 'email' - значення являє собою коректну (синтаксично) адресу електронної пошти.
  • 'url' - значення являє собою коректну (синтаксично) web-адресу.
  • 'isTrue' - значення точно дорівнює true.
  • 'regExp' - значення відповідає регулярному виразу. У цьому випадку повинно бути задано властивість 'regExp'.

Валідатор - рядок

Якщо валідатор - рядок, то це перевірка значення на пустоту. Сам рядок буде повідомленням про помилку. Це еквівалент об'єкта


Валідатор - функція

Якщо валідатор - функція, то це еквівалент об'єкта


Формат функції валідації

valid(elem: IElement, value?: any): boolean | string | Promise;

Аргументи:

  • elem - елемент, до якого застосовується валідатор.
  • val - значення, що перевіряється.

Повертає:

  • true - якщо значення коректне.
  • false - якщо значення некоректне.
  • string - повідомлення про помилку, якщо значення некоректне. Цей рядок буде заміщувати значення властивості 'msg'. Якщо валідатор декларовано як функцію, то ця функція завжди повинна повертати рядок (значення msg в цьому випадку просто нема).
  • об`єкт templateValidatorResult - об'єкт, що визначає повідомлення про помилку (msg) і ступінь її серйозності (severity).
  • Promise - для асинхронного валідатора. Проміс повинен повернути булеве значення або рядок.

Формат функції applyIf

applyIf?: (elem: IElement, value?: any): boolean

Аргументи:

  • elem - елемент, до якого застосовується валідатор.
  • val - значення, що перевіряється.

Повертає:

  • true - якщо валідатор активний і його потрібно застосувати.

Асинхронні валідатори

Асинхронні валідатори використовуються у випадку, коли для перевірки коректності потрібно звернутися до серверу. Такий валідатор відмічається властивістю async: true.

Функція валідації для асинхронного валідатора повинна повернути Promise, значенням якого буде або булеве значення, або рядок (як і у звичайної функції валідації).

Асинхронний валідатор зазвичай використовує метод контролера $asyncValid.

Зверніть увагу! Значення, що повертаються, для асинхронних валідаторів, кешуються для уникнення занадто частих звернень до серверу. Фактично валідатор викликається тільки одного разу при кожній зміні пов'язаних з ними значень.