2012-11-08 56 views
0

默認情況下,某些表單元素(例如Zend_Form_Element_MultiCheckbox 等)註冊一個InArray驗證程序,該驗證程序根據已註冊選項的數組鍵進行驗證。這個驗證器使用區分大小寫的比較。什麼是最簡單的什麼使大小寫不敏感? 我現在遇到的唯一解決方案是這樣的。 關閉此驗證:不區分大小寫inArray for Zend Form元素如Zend_Form_Element_MultiCheckbox等

$element->setRegisterInArrayValidator(false); 

創建新的驗證,這將使不區分大小寫的比較,並添加此驗證的元素。這是解決這個問題的唯一方法嗎?如果有一個標準的方法可以使inArray驗證器進行不區分大小寫的比較,那麼似乎會更好。

回答

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)),沒有別的選擇。

+0

是的,我閱讀文檔。但是我覺得Zend Framework中沒有這樣的標準驗證器,這似乎很奇怪。 – Oleg