Добавление нового правила валидации поля (restriction) — различия между версиями
VITL' (обсуждение | вклад) (Новая страница: «При добавлении поля в какой-либо тип данных, есть возможность указать "'''Формат значения'''"…») |
Mad grant (обсуждение | вклад) |
||
Строка 31: | Строка 31: | ||
http://ваш_домен/udata/system/fieldTypesList/ | http://ваш_домен/udata/system/fieldTypesList/ | ||
</pre> | </pre> | ||
+ | [[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:API]] |
Текущая версия на 13:08, 5 июня 2013
При добавлении поля в какой-либо тип данных, есть возможность указать "Формат значения". К примеру, для строкового поля, можно выбрать "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/