1
如果我有這個代碼是過濾器先執行然後在Zend框架
$field = new Zend_Form_Element();
$field->addValidator(new Zend_Validate_Alnum());
$field->setFilter(new Zend_Filter_StringToLower());
驗證是字符串後執行字母數字字符檢查已轉化爲小寫?
如果我有這個代碼是過濾器先執行然後在Zend框架
$field = new Zend_Form_Element();
$field->addValidator(new Zend_Validate_Alnum());
$field->setFilter(new Zend_Filter_StringToLower());
驗證是字符串後執行字母數字字符檢查已轉化爲小寫?
在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'));
是的。該過濾器由元素的getValue()
方法激活。
setFilter不存在。正確的方法是addFilter。 – Maxence