是否首先执行过滤器,然后执行Zend Framework中的验证器

时间:2011-08-10 05:50:34

标签: zend-framework

如果我有这段代码

$field = new Zend_Form_Element();
$field->addValidator(new Zend_Validate_Alnum());
$field->setFilter(new Zend_Filter_StringToLower());

是否仅检查字符串转换为小写后执行的字母数字字符?

2 个答案:

答案 0 :(得分:2)

是。过滤器由元素的getValue()方法激活。

答案 1 :(得分:1)

在Zend / Form / Element.php中,方法isValid:

    $this->setValue($value);
    $value = $this->getValue();
在将值传递给验证器之前,

getValue调用数据上的过滤器。所以是的,在验证之前过滤了该值。你可以用以下方法测试它:

$field = new Zend_Form_Element('test');
$field->addValidator(new Zend_Validate_Alnum());

// Display bool(false)
var_dump($field->isValid('A,B'));

$field->addFilter(new Zend_Filter_Alnum());

// Display bool(true)
var_dump($field->isValid('A,B'));