ModuleValidate_EntityValidator
Package | engine.modules.validate |
---|---|
Inheritance | abstract class ModuleValidate_EntityValidator » Entity » LsObject |
Subclasses | ModuleValidate_EntityValidatorBoolean, ModuleValidate_EntityValidatorCaptcha, ModuleValidate_EntityValidatorCompare, ModuleValidate_EntityValidatorDate, ModuleValidate_EntityValidatorEmail, ModuleValidate_EntityValidatorInline, ModuleValidate_EntityValidatorNumber, ModuleValidate_EntityValidatorRegexp, ModuleValidate_EntityValidatorRequired, ModuleValidate_EntityValidatorString, ModuleValidate_EntityValidatorTags, ModuleValidate_EntityValidatorType, ModuleValidate_EntityValidatorUrl |
Since | 1.0 |
Source Code | /engine/modules/validate/entity/Validator.entity.class.php |
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
bSkipOnError | bool | Пропускать или нет ошибку | ModuleValidate_EntityValidator |
fields | array | Список полей сущности для валидации | ModuleValidate_EntityValidator |
label | null|string | Название поля сущности для отображения в тексте ошибки | ModuleValidate_EntityValidator |
msg | null|string | Текст ошибки валидации, переопределяет текст валидатора | ModuleValidate_EntityValidator |
on | null|array | Список сценариев в которых участвует валидатор | ModuleValidate_EntityValidator |
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aData | array | Данные сущности, на этот массив мапятся методы set* и get* | Entity |
aValidateErrors | array | Список ошибок валидации в разрезе полей, например | Entity |
aValidateRules | array | Список правил валидации полей | Entity |
oEntityCurrent | null|Entity | Объект текущей сущности, которая проходит валидацию | ModuleValidate_EntityValidator |
sFieldCurrent | null|string | Объект текущей сущности, которая проходит валидацию | ModuleValidate_EntityValidator |
sPrimaryKey | null|string | Имя поля с первичным ключом в БД | Entity |
sValidateScenario | string | Сценарий валиадции полей | Entity |
Public Methods
Method | Description | Defined By |
---|---|---|
Init() | Метод инициализации сущности, вызывается при её создании | Entity |
_Validate() | Выполняет валидацию данных сущности | Entity |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | Entity |
__construct() | Если передать в конструктор ассоциативный массив свойств и их значений, то они автоматом загрузятся в сущность | Entity |
_addValidateError() | Добавляет для поля ошибку в список ошибок | Entity |
_clearValidateErrors() | Очищает список всех ошибок или для конкретного поля | Entity |
_createValidators() | Создает и возвращает список валидаторов для сущности | Entity |
_getData() | Получает массив данных сущности | Entity |
_getDataArray() | Рекурсивное преобразование объекта и вложенных объектов в массив | Entity |
_getDataOne() | Возвращает данные по конкретному полю | Entity |
_getPrimaryKey() | Получение первичного ключа сущности (ключ, а не значение!) | Entity |
_getPrimaryKeyValue() | Возвращает значение первичного ключа/поля | Entity |
_getValidateError() | Возвращает первую ошибку для поля или среди всех полей | Entity |
_getValidateErrors() | Возвращает список ошибок для всех полей или одного поля | Entity |
_getValidateScenario() | Возвращает текущий сценарий валидации | Entity |
_getValidators() | Возвращает список валидаторов с учетом текущего сценария | Entity |
_hasValidateErrors() | Проверяет есть ли ошибки валидации | Entity |
_setData() | Устанавливает данные сущности | Entity |
_setValidateScenario() | Устанавливает сценарий валидации | Entity |
applyTo() | Применять или нет сценарий к текущему валидатору | ModuleValidate_EntityValidator |
validate() | Основной метод валидации | ModuleValidate_EntityValidator |
validateEntity() | Запускает валидацию полей сущности | ModuleValidate_EntityValidator |
validateEntityField() | Запускает валидацию конкретного поля сущности | ModuleValidate_EntityValidator |
Protected Methods
Method | Description | Defined By |
---|---|---|
getMessage() | Возвращает сообщение, используется для получения сообщения об ошибке валидатора | ModuleValidate_EntityValidator |
getValueOfCurrentEntity() | Возвращает значение поля текущей сущности | ModuleValidate_EntityValidator |
isEmpty() | Проверяет данные на пустое значение | ModuleValidate_EntityValidator |
setValueOfCurrentEntity() | Устанавливает значение поля текущей сущности | ModuleValidate_EntityValidator |
Property Details
Пропускать или нет ошибку
Список полей сущности для валидации
Название поля сущности для отображения в тексте ошибки
Текст ошибки валидации, переопределяет текст валидатора
Объект текущей сущности, которая проходит валидацию
Список сценариев в которых участвует валидатор
Объект текущей сущности, которая проходит валидацию
Method Details
public bool applyTo(string $sScenario)
| ||
$sScenario | string | Сценарий валидации |
{return} | bool |
public function applyTo($sScenario) {
return (empty($this->on) && !$sScenario) || isset($this->on[$sScenario]);
}
Применять или нет сценарий к текущему валидатору Для сценария учитываются только те правила, где явно прописан необходимый сценарий Если в правиле не прописан сценарий, то он принимает значение '' (пустая строка)
protected string getMessage(string $sMsgDefault, null|string $sMsgFieldCustom=NULL, array $aReplace=array (
))
| ||
$sMsgDefault | string | Дефолтное сообщение |
$sMsgFieldCustom | null|string | Поле/параметр в котором может храниться кастомное сообщение. В поле $sMsgFieldCustom."Id" можно хранить ключ текстовки из языкового файла |
$aReplace | array | Список параметров для замены в сообщении (плейсхолдеры) |
{return} | string |
protected function getMessage($sMsgDefault,$sMsgFieldCustom=null,$aReplace=array()) {
if (!is_null($sMsgFieldCustom)) {
if (!is_null($this->$sMsgFieldCustom)) {
$sMsgDefault=$this->$sMsgFieldCustom;
} else {
$sMsgFieldCustomId=$sMsgFieldCustom.'Id';
if (property_exists($this,$sMsgFieldCustomId) and !is_null($this->$sMsgFieldCustomId)) {
$sMsgDefault=$this->Lang_Get($this->$sMsgFieldCustomId,array(),false);
}
}
}
if ($aReplace) {
foreach ($aReplace as $sFrom => $sTo) {
$aReplacePairs["%%{$sFrom}%%"]=$sTo;
}
$sMsgDefault=strtr($sMsgDefault,$aReplacePairs);
}
return $sMsgDefault;
}
Возвращает сообщение, используется для получения сообщения об ошибке валидатора
protected mixed|null getValueOfCurrentEntity(string $sField)
| ||
$sField | string | |
{return} | mixed|null |
protected function getValueOfCurrentEntity($sField) {
if ($this->oEntityCurrent) {
return call_user_func_array(array($this->oEntityCurrent,'get'.func_camelize($sField)),array());
}
return null;
}
Возвращает значение поля текущей сущности
protected bool isEmpty(mixed $mValue, bool $bTrim=false)
| ||
$mValue | mixed | Данные |
$bTrim | bool | Не учитывать пробелы |
{return} | bool |
protected function isEmpty($mValue,$bTrim=false) {
return $mValue===null || $mValue===array() || $mValue==='' || $bTrim && is_scalar($mValue) && trim($mValue)==='';
}
Проверяет данные на пустое значение
protected void setValueOfCurrentEntity(string $sField, string|mixed $sValue)
| ||
$sField | string | |
$sValue | string|mixed |
protected function setValueOfCurrentEntity($sField,$sValue) {
if ($this->oEntityCurrent) {
call_user_func_array(array($this->oEntityCurrent,'set'.func_camelize($sField)),array($sValue));
}
}
Устанавливает значение поля текущей сущности
abstract public void validate($sValue $sValue)
| ||
$sValue | $sValue |
abstract public function validate($sValue);
Основной метод валидации
public void validateEntity(Entity $oEntity, null $aFields=NULL)
| ||
$oEntity | Entity | Объект сущности |
$aFields | null | Список полей для валидации, если пуст то валидируются все поля указанные в правиле |
public function validateEntity($oEntity,$aFields=null) {
if(is_array($aFields)) {
$aFields=array_intersect($this->fields,$aFields);
} else {
$aFields=$this->fields;
}
$this->oEntityCurrent=$oEntity;
/**
* Запускаем валидацию для каждого поля
*/
foreach($aFields as $sField) {
if(!$this->bSkipOnError || !$oEntity->_hasValidateErrors($sField)) {
$this->validateEntityField($oEntity,$sField);
}
}
}
Запускает валидацию полей сущности
public bool validateEntityField(Entity $oEntity, string $sField)
| ||
$oEntity | Entity | Объект сущности |
$sField | string | Поле сущности |
{return} | bool |
public function validateEntityField($oEntity,$sField) {
$this->sFieldCurrent=$sField;
/**
* Получаем значение поля у сущности через геттер
*/
$sValue=call_user_func_array(array($oEntity,'get'.func_camelize($sField)),array());
if (($sMsg=$this->validate($sValue))!==true) {
/**
* Подставляем имя поля в сообщение об ошибке валидации
*/
$sMsg=str_replace('%%field%%',is_null($this->label) ? $sField : $this->label,$sMsg);
$oEntity->_addValidateError($sField,$sMsg);
return false;
} else {
return true;
}
}
Запускает валидацию конкретного поля сущности