Реализовать валидацию поля типа [Строка] на странице записи

Средний

Пример. Реализовать валидацию поля Рабочий телефон (Business phone) типа Строка (String) на странице контакта. Значение поля Рабочий телефон (Business phone) должно соответствовать маске +44 ХХХ ХХХ ХХХХ.

Создать схему замещающей модели представления страницы контакта 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model).

  3. Заполните свойства схемы.

    • Код (Code) — "ContactPageV2".
    • Заголовок (Title) — "Схема отображения карточки контакта" ("Display schema - Contact card").
    • Родительский объект (Parent object) — выберите "ContactPageV2".
  4. Добавьте локализуемую строку.

    1. В контекстном меню узла Локализуемые строки (Localizable strings) нажмите кнопку scr_add_button.png.
    2. Заполните свойства локализуемой строки.

      • Код (Code) — "InvalidPhoneFormatMessage".
      • Значение (Value) — "Введите номер в формате: +44 ХХХ ХХХ ХХХХ" ("Enter the number in format +44 ХХХ ХХХ ХХХХ").
    3. Для добавления локализуемой строки нажмите Добавить (Add).
  5. В объявлении класса модели представления в качестве зависимостей добавьте модуль ConfigurationConstants.
  6. Реализуйте валидацию поля типа Строка (String).

    Для этого в свойстве methods реализуйте методы:

    • phoneValidator() — метод-валидатор, который определяет выполнение условия.
    • setValidationConfig() — переопределенный базовый метод, в котором метод-валидатор привязан к колонке Phone.

    Исходный код схемы замещающей модели представления страницы контакта представлен ниже.

    ContactPageV2
    define("ContactPageV2", ["ConfigurationConstants"], function(ConfigurationConstants) {
        return {
            /* Название схемы объекта страницы записи. */
            entitySchemaName: "Contact",
            /* Методы модели представления страницы записи. */
            methods: {
                /* Переопределение базового метода, который инициализирует пользовательские валидаторы. */
                setValidationConfig: function() {
                    /* Вызывает инициализацию валидаторов родительской модели представления. */
                    this.callParent(arguments);
                    /* Для колонки [Phone] добавляется метод-валидатор phoneValidator(). */
                    this.addColumnValidator("Phone", this.phoneValidator);
                },
                /* Метод-валидатор значения колонки [Phone]. */
                phoneValidator: function(value) {
                    /* Переменная для хранения сообщения об ошибке валидации. */
                    var invalidMessage = "";
                    /* Переменная для хранения результата проверки номера. */
                    var isValid = true;
                    /* Переменная для хранения номера телефона. */
                    var number = value || this.get("Phone");
                    /* Определение правильности формата номера с помощью регулярного выражения. */
                    isValid = (Ext.isEmpty(number) ||
                        new RegExp("^\\+44\\s[0-9]{3}\\s[0-9]{3}\\s[0-9]{4}$").test(number));
                    /* Если формат номера неправильный, то заполняется сообщение об ошибке. */
                    if (!isValid) {
                        invalidMessage = this.get("Resources.Strings.InvalidPhoneFormatMessage");
                    }
                    /* Объект, свойство которого содержит сообщение об ошибке валидации. Если валидация прошла успешна, то в объекте возвращается пустая строка. */
                    return {
                        invalidMessage: invalidMessage
                    };
                }
            }
        };
    });
    
  7. На панели инструментов дизайнера нажмите Сохранить (Save).

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера:

  1. Обновите страницу раздела Контакты (Contacts).
  2. В поле Рабочий телефон (Business phone) введите номер телефона, который не соответствует маске +44 ХХХ ХХХ ХХХХ.

В результате выполнения примера на странице контакта отображается соответствующее предупреждение.

При попытке сохранить контакт, у которого номер телефона не соответствует маске +44 ХХХ ХХХ ХХХХ, отображается информационное сообщение.