如果我有这段代码
$field = new Zend_Form_Element();
$field->addValidator(new Zend_Validate_Alnum());
$field->setFilter(new Zend_Filter_StringToLower());
是否仅检查字符串转换为小写后执行的字母数字字符?
答案 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'));