Как расширить Zend_Validator_StringLength? - PullRequest
2 голосов
/ 31 января 2011

Как следует расширить Zend_Validator_StringLength?
MyValidator:

class Zend_Validate_StringLengthNoTags extends Zend_Validate_StringLength {

    public function  __construct($options = array()) {
        parent::__construct($options);
    }

    public function isValid($value) {
        return parent::isValid(trim(strip_tags($value)));
    }
}

Использование валидатора - ошибка не может присвоить значения $ this -> _ min, $это -> _ max:

$text->addValidator(new Zend_Validator_StringLengthNoTags(array('max'=>4,'min'=>2)));

Редактировать:

корень ошибки: $this->_min==1, $this->_max==null, но это должно быть

$this->_min==2, $this->_max==4

Обновление : answer: Это была внутренняя проблема системы приложения, которая вызвала эту ошибку, она исправлена, так что код выше работал.Спасибо всем людям, они пытаются мне помочь.

Спасибо

1 Ответ

1 голос
/ 31 января 2011

Кажется, что ваши Zend_Validate_StringLengthNoTags могут быть просто заменены фильтрами StripTags и StringTrim и стандартным валидатором Zend_Validate_StringLength.

Например, я думаю, что следующее будет работать так же, как ваш валидатор:

   $text->setFilters(array('stripTags','stringTrim'));
   $text->addValidator(new Zend_Validator_StringLength(array('max'=>4,'min'=>2)));

Причина заключается в том, что проверка в Zend Framework выполняется после фильтрации, то есть для отфильтрованных данных.

Возвращаясь к вашему коду Zend_Validate_StringLengthNoTags. Код выглядит нормально, и у меня не возникает проблем с ним.

...