ModuleValidate_EntityValidator

Package framework.modules.validate
Inheritance abstract class ModuleValidate_EntityValidator » Entity » LsObject
Subclasses ModuleValidate_EntityValidatorBoolean, ModuleValidate_EntityValidatorCaptcha, ModuleValidate_EntityValidatorCompare, ModuleValidate_EntityValidatorDate, ModuleValidate_EntityValidatorDefault, ModuleValidate_EntityValidatorEmail, ModuleValidate_EntityValidatorEnum, ModuleValidate_EntityValidatorInline, ModuleValidate_EntityValidatorMethod, ModuleValidate_EntityValidatorNumber, ModuleValidate_EntityValidatorRegexp, ModuleValidate_EntityValidatorRequired, ModuleValidate_EntityValidatorSafe, ModuleValidate_EntityValidatorString, ModuleValidate_EntityValidatorTags, ModuleValidate_EntityValidatorType, ModuleValidate_EntityValidatorUrl
Since 1.0
Source Code /framework/classes/modules/validate/entity/Validator.entity.class.php
Базовый класс валидатора От этого класса наследуются все валидаторы Public свойства используются в качестве параметров валидатора, котрый можно задавать в правилах

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
bSkipOnError bool Пропускать или нет ошибку ModuleValidate_EntityValidator
condition null|string Условие срабатывания валидации 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
_aBehaviors Список поведений в виде готовых объектов, формируется автоматически LsObject
_aData array Данные сущности, на этот массив мапятся методы set* и get* Entity
aBehaviors array Список поведений LsObject
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
AddBehaviorHook() Добавляет хук поведения LsObject
AttachBehavior() Присоединяет поведение к объекту LsObject
DetachBehavior() Отсоединяет поведение от объекта LsObject
GetBehavior() Возвращает объект поведения по его имени LsObject
GetBehaviors() Возвращает все объекты поведения LsObject
Init() Метод инициализации сущности, вызывается при её создании Entity
RemoveBehaviorHook() Удаляет хук поведения LsObject
RunBehaviorHook() Запускает хук поведения на выполнение LsObject
_Validate() Выполняет валидацию данных сущности Entity
__call() Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля Entity
__clone() При клонировании сбрасываем поведения LsObject
__construct() Если передать в конструктор ассоциативный массив свойств и их значений, то они автоматом загрузятся в сущность Entity
__get() Обработка доступа к объекты поведения LsObject
_addValidateError() Добавляет для поля ошибку в список ошибок Entity
_clearValidateErrors() Очищает список всех ошибок или для конкретного поля Entity
_createValidators() Создает и возвращает список валидаторов для сущности Entity
_getData() Получает массив данных сущности Entity
_getDataArray() Рекурсивное преобразование объекта и вложенных объектов в массив Entity
_getDataOne() Возвращает данные по конкретному полю Entity
_getPrimaryKey() Получение первичного ключа сущности (ключ, а не значение!) Entity
_getPrimaryKeyValue() Возвращает значение первичного ключа/поля Entity
_getValidateError() Возвращает первую ошибку для поля или среди всех полей Entity
_getValidateErrors() Возвращает список ошибок для всех полей или одного поля Entity
_getValidateRules() Возвращает список правил для валидации Entity
_getValidateScenario() Возвращает текущий сценарий валидации Entity
_getValidators() Возвращает список валидаторов с учетом текущего сценария Entity
_hasValidateErrors() Проверяет есть ли ошибки валидации Entity
_setData() Устанавливает данные сущности Entity
_setDataSafe() Устанавливает данные, но только те, которые есть в $this->aValidateRules Entity
_setValidateScenario() Устанавливает сценарий валидации Entity
applyTo() Применять или нет сценарий к текущему валидатору ModuleValidate_EntityValidator
getTypeValidator() Возвращает тип валидатора ModuleValidate_EntityValidator
validate() Основной метод валидации ModuleValidate_EntityValidator
validateEntity() Запускает валидацию полей сущности ModuleValidate_EntityValidator
validateEntityField() Запускает валидацию конкретного поля сущности ModuleValidate_EntityValidator

Protected Methods

Hide inherited methods

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

Property Details

bSkipOnError property
public bool $bSkipOnError;

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

condition property
public null|string $condition;

Условие срабатывания валидации Поддерживается только для валидации сущности, значение соответствует методу сущности, который будет вызван перед валидацией, если метод вернет false, то валидация будет пропущена

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: /framework/classes/modules/validate/entity/Validator.entity.class.php#113 (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: /framework/classes/modules/validate/entity/Validator.entity.class.php#127 (show)
protected function getMessage($sMsgDefault$sMsgFieldCustom null$aReplace = array())
{
    if (!
is_null($sMsgFieldCustom)) {
        if (
property_exists($this$sMsgFieldCustom) and !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;
}

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

getTypeValidator() method
public string getTypeValidator()
{return} string
Source Code: /framework/classes/modules/validate/entity/Validator.entity.class.php#241 (show)
public function getTypeValidator()
{
    return 
func_underscore(str_ireplace('ModuleValidate_EntityValidator'''get_class($this)));
}

Возвращает тип валидатора

getValueOfCurrentEntity() method
protected mixed|null getValueOfCurrentEntity(string $sField)
$sField string
{return} mixed|null
Source Code: /framework/classes/modules/validate/entity/Validator.entity.class.php#215 (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: /framework/classes/modules/validate/entity/Validator.entity.class.php#99 (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: /framework/classes/modules/validate/entity/Validator.entity.class.php#229 (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: /framework/classes/modules/validate/entity/Validator.entity.class.php#89 (show)
abstract public function validate($sValue);

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

validateEntity() method
public void validateEntity(Entity $oEntity, null $aFields=NULL)
$oEntity Entity Объект сущности
$aFields null Список полей для валидации, если пуст то валидируются все поля указанные в правиле
Source Code: /framework/classes/modules/validate/entity/Validator.entity.class.php#154 (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: /framework/classes/modules/validate/entity/Validator.entity.class.php#180 (show)
public function validateEntityField($oEntity$sField)
{
    
$this->sFieldCurrent $sField;
    
/**
     * Получаем значение поля у сущности через геттер
     */
    
$sValue call_user_func_array(array($oEntity'get' func_camelize($sField)), array());
    
/**
     * Если условие валидации возвращает false, то пропускаем валидацию
     */
    
if ($this->condition and method_exists($oEntity$this->condition) and !call_user_func_array(array(
            
$oEntity,
            
$this->condition
        
), array())
    ) {
        return 
true;
    }
    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;
    }
}

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