Код: Выделить всё
array('attribute', 'in', 'allowEmpty'=>false, 'range' => array(0,1,7,13), 'enableClientValidation' => false),
Код: Выделить всё
''
Отсюда и вопрос: верно ли поведение валидатора?
Код: Выделить всё
array('attribute', 'in', 'allowEmpty'=>false, 'range' => array(0,1,7,13), 'enableClientValidation' => false),
Код: Выделить всё
''
Код: Выделить всё
"0"
Код: Выделить всё
array('attribute', 'in', 'allowEmpty'=>false, 'range' => array('0',1,7,13), 'enableClientValidation' => false),
Код: Выделить всё
$value=$object->$attribute;
if($this->allowEmpty && $this->isEmpty($value))
return;
... дальше проверка на range...
Код: Выделить всё
'range' => array('','a','b','c')
Не совсем понял, что Вы имеете в виду =\allowEmpty по логике предназначен для проверки отсутствия аттрибута как такового...
В этом вопрос вообще не стоит Мне просто интересно услышать "чужое" мнение по логике работы этого валидатора.может быстрей и легче свой валидатор написать?
Код: Выделить всё
whether the attribute value can be null or empty. Defaults to true, meaning that if the attribute is empty, it is considered valid.
Код: Выделить всё
/**
* Checks if the given value is empty.
* A value is considered empty if it is null, an empty array, or the trimmed result is an empty string.
* Note that this method is different from PHP empty(). It will return false when the value is 0.
* @param mixed $value the value to be checked
* @param boolean $trim whether to perform trimming before checking if the string is empty. Defaults to false.
* @return boolean whether the value is empty
*/
protected function isEmpty($value,$trim=false)
{
return $value===null || $value===array() || $value==='' || $trim && is_scalar($value) && trim($value)==='';
}
Код: Выделить всё
protected function validateAttribute($object,$attribute)
{
$value=$object->$attribute;
if($this->isEmpty($value))
{
if(!$this->allowEmpty)
{
$message=$this->message!==null?$this->message:Yii::t('yii','{attribute} cannot be blank.');
$this->addError($object,$attribute,$message);
}
return;
}
...etc...