默认情况下,某些表单元素(例如Zend_Form_Element_MultiCheckbox 等等)注册一个InArray验证器,它验证注册选项的数组键。此验证器使用区分大小写的比较。什么是最简单的不区分大小写? 我遇到的唯一解决方案现在看起来像这样。 关闭此验证器:
$element->setRegisterInArrayValidator(false);
创建新的验证器,它将进行不区分大小写的比较,并为元素添加此验证。这是解决这个问题的唯一方法吗?如果有一种标准方法可以使inArray验证器进行不区分大小写的比较,那似乎会很好。
答案 0 :(得分:0)
Zend_Validate_InArray
使用in_array
函数,函数文档说:
如果needle是一个字符串,则以区分大小写的方式进行比较。
Zend_Validate_InArray
包含严格比较选项,该选项又由in_array
函数处理。但是没有选择不区分大小写的比较。
使用resursive
选项,Zend_Validate_InArray
使用递归迭代器而不是in_array
,并通过==
比较值(或者,在严格模式下,{{1}运算符。这也是区分大小写的。
所以没有其他选择,只能创建自己的验证器(我将从===
继承,覆盖Zend_Validate_InArray
)。