2011-08-10 27 views
1

如果我有這個代碼是過濾器先執行然後在Zend框架

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

驗證是字符串後執行字母數字字符檢查已轉化爲小寫?

+1

setFilter不存在。正確的方法是addFilter。 – Maxence

回答

1

在Zend的/形式/ 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')); 
2

是的。該過濾器由元素的getValue()方法激活。