我正在使用Zend_Filter_Input來過濾和驗證我的數據。對於一個場(性別),我現在用的是Zend_Validate_InArray來驗證,如果該值是Zend_Filter_Input Zend_Validate_InArray-Validator其中有一個數組作爲它的針
array('m', 'w');
到目前爲止好。
運行我的UnitTests時,我注意到,空數組也是性別的有效值。
爲了分析這個問題,我寫了下面的代碼:
$genderArray = array('m', 'w');
$needle = array();
if(in_array($needle, $genderArray)) {
Zend_Debug::dump('is in array');
} else {
Zend_Debug::dump('is not in array');
}
$validator = new Tueks_Validate_InArray($genderArray);
if ($validator->isValid($needle)) {
Zend_Debug::dump('is in array');
} else {
Zend_Debug::dump('is not in array');
}
這兩次,我得到了「不在陣」。
但是,當我使用下面的代碼:
$child = new Tueks_Placereport_Child();
$child->setGender($needle);
$child->validate();
一切工作正常( - 陣列( 'M'>陣列()北京時間一部分, 'W'))?!?
下面是相關的部分從我的驗證法:
$genderArray = array('m', 'w');
$filters = array();
$validators = array('gender'=>
array('presence'=> 'required',
new Tueks_Validate_InArray($genderArray)
)
);
$input = new Zend_Filter_Input($filters, $validators, $this->_data);
Tueks_Validate_InArray就像Zend_Validate_InArray一樣的,但與其他消息。 我沒有看到問題,爲什麼當使用Zend_Filter_Input時,空數組是一個有效的值。 希望你能幫助我。
順便說一句,如果你真的提供了一個工作代碼片段,你可能會早些得到答案。如果你提到丟失的類名和字段,很難找出問題的原因:) –