Добавление нового правила валидации поля (restriction) — различия между версиями
VITL' (обсуждение | вклад) (Новая страница: «При добавлении поля в какой-либо тип данных, есть возможность указать "'''Формат значения'''"…») |
(нет различий)
|
Версия 03:46, 28 июля 2011
При добавлении поля в какой-либо тип данных, есть возможность указать "Формат значения". К примеру, для строкового поля, можно выбрать "E-mail", тогда при добавлении страницы или объекта это поле будет валидироваться по правилу restriction’a "E-mail". Управляющий класс находится в файле \classes\system\subsystems\models\data\restrictions\email.php:
<?php
class emailRestriction extends baseRestriction {
protected $errorMessage = 'restriction-error-email';
public function validate($value) {
return (bool) ($value ? preg_match("/.+\@.+\..+/", $value) : true);
}
};
?>
validate($value) – метод в который передается сохраняемое значение, это значение проходит валидацию, если метод возвращает true, то выполнение остальной части кода продолжается, в ином случае происходит редирект на прошлую страницу с указанием ошибки макросом system listErrorMessages().
$errorMessage – переменная в которой хранится константа ошибки, ее перевод хранится в файлах classes/modules/data/i18n.php, i18n.en.php, при добавлении своего restriction’a необходимо добавить копию файла i18n.php с названием i18n.ru.php
Основной управляющий класс для в restriction-ов находится в файле: \classes\system\subsystems\models\data\baseRestriction.php
Новый restriction можно добавить через API класса baseRestriction, метод add(), либо напрямую в базу данных, в таблицу cms3_object_fields_restrictions.
class_prefix - название класса рестрикшена
title - название рестрикшена
field_type_id - id типа поля, для которого допустим этот рестрикшен.
Список всех типов полей можно получить через такой запрос:
http://ваш_домен/udata/system/fieldTypesList/