Описание
Рестрикшены представляют из себя набор классов по валидации и модификации значений полей объектов в зависимости от их функционального назначения.
Код рестрикшенов лежит в папке ~/classes/system/subsystems/models/data/restrictions
. Каждый рестрикшен имеет строковой идентификатор (classPrefix), который используется для связывания полей с соответствующим классом. Файлы, содержащие код рестрикшенов именуются по строковому идентификатору: “classPrefix.php
”. Класс именуется как “classPrefixRestriction” и наследуется от класса “baseRestriction”.
Примеры использования
Рассмотрим реализацию рестрикшена “E-mail”, который идет в поставке. Рестрикшен “e-mail” используется для проверки корректности ввода строковых полей, содержащих e-mail.
По умолчанию этот файл располагается по адресу: ~/classes/system/subsystems/models/data/restrictions/email.php
<?php
class emailRestriction extends baseRestriction {
protected $errorMessage = 'restriction-error-email';
public function validate($value, $objectId = false) {
return (bool) ($value ? preg_match("/.+\@.+\..+/", $value) : true);
}
};
?>
При попытке изменить значение для, которому назначен этот рестрикшен, будет происходить следующее:
-
Будет создан экземпляр класса
emailRestriction
-
Вызван метод validate(…), в который в качестве аргумента будет передано новое значение
-
Если значение валидируется регулярным выражением, то метод возвращает true и новое значение сохраняется в базу данных
-
Если новое значение не соответствует регулярному выражению, возвращается false, из файла i18n берется описание ошибки по ее коду ($errorMessage) и пользователю показывается сообщение с этой ошибкой
-