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 Properties
Property | Type | Description | Defined 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
Property | Type | Description | Defined 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
Method | Description | Defined 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
Method | Description | Defined By |
---|---|---|
PrepareBehaviors() | Инициализация поведений | LsObject |
getMessage() | Возвращает сообщение, используется для получения сообщения об ошибке валидатора | ModuleValidate_EntityValidator |
getValueOfCurrentEntity() | Возвращает значение поля текущей сущности | ModuleValidate_EntityValidator |
isEmpty() | Проверяет данные на пустое значение | ModuleValidate_EntityValidator |
setValueOfCurrentEntity() | Устанавливает значение поля текущей сущности | ModuleValidate_EntityValidator |
Property Details
Пропускать или нет ошибку
Условие срабатывания валидации Поддерживается только для валидации сущности, значение соответствует методу сущности, который будет вызван перед валидацией, если метод вернет false, то валидация будет пропущена
Список полей сущности для валидации
Название поля сущности для отображения в тексте ошибки
Текст ошибки валидации, переопределяет текст валидатора
Объект текущей сущности, которая проходит валидацию
Список сценариев в которых участвует валидатор
Объект текущей сущности, которая проходит валидацию
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 (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;
}
Возвращает сообщение, используется для получения сообщения об ошибке валидатора
public string getTypeValidator()
| ||
{return} | string |
public function getTypeValidator()
{
return func_underscore(str_ireplace('ModuleValidate_EntityValidator', '', get_class($this)));
}
Возвращает тип валидатора
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());
/**
* Если условие валидации возвращает 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;
}
}
Запускает валидацию конкретного поля сущности