0

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

$element->setRegisterInArrayValidator(false);

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

4

1 回答 1

0

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

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

Zend_Validate_InArray包括用于严格比较的选项,该选项也由in_array函数处理。但是没有区分大小写比较的选项。

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

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

于 2012-11-08T10:51:51.200 回答