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 свойства используются в качестве параметров валидатора, котрый можно задавать в правилах

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined 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

Hide inherited properties

PropertyTypeDescriptionDefined 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

Hide inherited methods

MethodDescriptionDefined 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

Hide inherited methods

MethodDescriptionDefined By
getMessage() Возвращает сообщение, используется для получения сообщения об ошибке валидатора ModuleValidate_EntityValidator
getValueOfCurrentEntity() Возвращает значение поля текущей сущности ModuleValidate_EntityValidator
isEmpty() Проверяет данные на пустое значение ModuleValidate_EntityValidator
setValueOfCurrentEntity() Устанавливает значение поля текущей сущности ModuleValidate_EntityValidator

Property Details

bSkipOnError property
public bool $bSkipOnError;

Пропускать или нет ошибку

fields property
public array $fields;

Список полей сущности для валидации

label property
public null|string $label;

Название поля сущности для отображения в тексте ошибки

msg property
public null|string $msg;

Текст ошибки валидации, переопределяет текст валидатора

oEntityCurrent property
protected null|Entity $oEntityCurrent;

Объект текущей сущности, которая проходит валидацию

on property
public null|array $on;

Список сценариев в которых участвует валидатор

sFieldCurrent property
protected null|string $sFieldCurrent;

Объект текущей сущности, которая проходит валидацию

Method Details

applyTo() method
public bool applyTo(string $sScenario)
$sScenario string Сценарий валидации
{return} bool
Source Code: /engine/modules/validate/entity/Validator.entity.class.php#98 (show)
public function applyTo($sScenario) {
    return (empty(
$this->on) && !$sScenario) || isset($this->on[$sScenario]);
}

Применять или нет сценарий к текущему валидатору Для сценария учитываются только те правила, где явно прописан необходимый сценарий Если в правиле не прописан сценарий, то он принимает значение '' (пустая строка)

getMessage() method
protected string getMessage(string $sMsgDefault, null|string $sMsgFieldCustom=NULL, array $aReplace=array ( ))
$sMsgDefault string Дефолтное сообщение
$sMsgFieldCustom null|string Поле/параметр в котором может храниться кастомное сообщение. В поле $sMsgFieldCustom."Id" можно хранить ключ текстовки из языкового файла
$aReplace array Список параметров для замены в сообщении (плейсхолдеры)
{return} string
Source Code: /engine/modules/validate/entity/Validator.entity.class.php#110 (show)
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;
}

Возвращает сообщение, используется для получения сообщения об ошибке валидатора

getValueOfCurrentEntity() method
protected mixed|null getValueOfCurrentEntity(string $sField)
$sField string
{return} mixed|null
Source Code: /engine/modules/validate/entity/Validator.entity.class.php#183 (show)
protected function getValueOfCurrentEntity($sField) {
    if (
$this->oEntityCurrent) {
        return 
call_user_func_array(array($this->oEntityCurrent,'get'.func_camelize($sField)),array());
    }
    return 
null;
}

Возвращает значение поля текущей сущности

isEmpty() method
protected bool isEmpty(mixed $mValue, bool $bTrim=false)
$mValue mixed Данные
$bTrim bool Не учитывать пробелы
{return} bool
Source Code: /engine/modules/validate/entity/Validator.entity.class.php#86 (show)
protected function isEmpty($mValue,$bTrim=false) {
    return 
$mValue===null || $mValue===array() || $mValue==='' || $bTrim && is_scalar($mValue) && trim($mValue)==='';
}

Проверяет данные на пустое значение

setValueOfCurrentEntity() method
protected void setValueOfCurrentEntity(string $sField, string|mixed $sValue)
$sField string
$sValue string|mixed
Source Code: /engine/modules/validate/entity/Validator.entity.class.php#195 (show)
protected function setValueOfCurrentEntity($sField,$sValue) {
    if (
$this->oEntityCurrent) {
        
call_user_func_array(array($this->oEntityCurrent,'set'.func_camelize($sField)),array($sValue));
    }
}

Устанавливает значение поля текущей сущности

validate() method
abstract public void validate($sValue $sValue)
$sValue $sValue
Source Code: /engine/modules/validate/entity/Validator.entity.class.php#77 (show)
abstract public function validate($sValue);

Основной метод валидации

validateEntity() method
public void validateEntity(Entity $oEntity, null $aFields=NULL)
$oEntity Entity Объект сущности
$aFields null Список полей для валидации, если пуст то валидируются все поля указанные в правиле
Source Code: /engine/modules/validate/entity/Validator.entity.class.php#135 (show)
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);
        }
    }
}

Запускает валидацию полей сущности

validateEntityField() method
public bool validateEntityField(Entity $oEntity, string $sField)
$oEntity Entity Объект сущности
$sField string Поле сущности
{return} bool
Source Code: /engine/modules/validate/entity/Validator.entity.class.php#159 (show)
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;
    }
}

Запускает валидацию конкретного поля сущности