Добавление нового правила валидации поля (restriction) — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «При добавлении поля в какой-либо тип данных, есть возможность указать "'''Формат значения'''"…»)
 
 
Строка 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/