不区分大小写的inArray for Zend Form元素,如Zend_Form_Element_MultiCheckbox等等

时间:2012-11-08 06:28:46

标签: php zend-framework zend-form zend-validate

默认情况下,某些表单元素(例如Zend_Form_Element_MultiCheckbox  等等)注册一个InArray验证器,它验证注册选项的数组键。此验证器使用区分大小写的比较。什么是最简单的不区分大小写? 我遇到的唯一解决方案现在看起来像这样。 关闭此验证器:

$element->setRegisterInArrayValidator(false);

创建新的验证器,它将进行不区分大小写的比较,并为元素添加此验证。这是解决这个问题的唯一方法吗?如果有一种标准方法可以使inArray验证器进行不区分大小写的比较,那似乎会很好。

1 个答案:

答案 0 :(得分:0)

Zend_Validate_InArray使用in_array函数,函数文档说:

  

如果needle是一个字符串,则以区分大小写的方式进行比较。

Zend_Validate_InArray包含严格比较选项,该选项又由in_array函数处理。但是没有选择不区分大小写的比较。

使用resursive选项,Zend_Validate_InArray使用递归迭代器而不是in_array,并通过==比较值(或者,在严格模式下,{{1}运算符。这也是区分大小写的。

所以没有其他选择,只能创建自己的验证器(我将从===继承,覆盖Zend_Validate_InArray)。