Zend framework Zend_Validator_StringLength应该如何扩展?

Zend framework Zend_Validator_StringLength应该如何扩展?,zend-framework,zend-validate,Zend Framework,Zend Validate,Zend_Validator_StringLength应该如何扩展? MyValidator: class Zend_Validate_StringLengthNoTags extends Zend_Validate_StringLength { public function __construct($options = array()) { parent::__construct($options); } public function isVa

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->\u min、$this->\u max:

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

错误根源:
$this->\u min==1,$this->\u max==null
,, 但应该是这样

$this->_min==2, $this->_max==4
更新:答案: 这是内部应用系统的问题,产生了这个bug,它修复了上面的代码。谢谢他们尽力帮助我


谢谢

您的Zend_Validate_StringLength标记似乎可以简单地用过滤器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代码。代码看起来正常,我看不出有什么问题。

\u min和\u max没有被分配,或者您想删除它们?它们没有被分配您想用这个自定义验证器实现什么。您想在删除html标记后验证输入字符串的长度吗?是的,Marchin,我想在删除html标记后验证输入字符串的长度。谢谢,但它不能被筛选器替换,我想删除html标记以进行验证,而不是其他用途。输入也应该用html标记存储在数据库中,不要认为编写的验证程序有问题。当然,添加
StripTags
作为过滤器和使用验证器之间的区别在于当他最终调用
$form->getValues()
时得到的值。如果作为过滤器添加,标签将被剥离。如果只在验证器中进行过滤,则标记仍将存在。@Yosef。“好了,现在我明白了。”大卫·温劳布。是的,现在我知道Yosef想做什么了。但我仍然看不出Zend_Validate_StringLengthNoTags的代码有什么问题。我甚至把这个验证器复制到了我自己的项目中,它按照它的设想工作。当然,看起来应该有用。不管怎么说,看起来他找到了答案,你从中得到了接受。赢,赢