2

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、$ this-> _ maxに値を割り当てません:

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

編集:

バグのルート: $this->_min==1, $this->_max==null、しかしそれは

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

更新:答え:これはこのバグを生成する内部アプリケーションシステムの問題でした。上記のコードが機能するように修正しました。彼らが私を助けようとしているすべての人々に感謝します。

ありがとう

4

1 に答える 1

1

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コードに戻ります。コードは問題ないように見え、問題を見つけることができません。

于 2011-01-31T12:35:03.840 に答える