我正在使用 Zend_Filter_Input 过滤和验证我的数据。对于一个字段(性别),我使用 Zend_Validate_InArray 来验证,如果值在
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();
一切正常(--> array() 是 array('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 时,一个空数组是一个有效值。希望您能够帮助我。