2011-03-07 105 views
3

我在將一段表單驗證代碼轉換爲CI 2.0時出現了一些問題。我試圖驗證一組複選框,但由於某種原因驗證未能運行回調或不驗證。CodeIgniter 2.0 - 驗證陣列

如何驗證複選框數組,以便檢查至少一個,並且值必須是選項之一(選項數組的關鍵字)?

編輯:

這裏是它失敗我一個更好的解釋。比方說,我有以下字段:

<input type="checkbox" value="1" name="purpose[]" /> 
<input type="checkbox" value="2" name="purpose[]" /> 

我給自己定的目的[]兩個規則 - 一個是需要規則的,另一種是定製的回調,檢查該值是否存在可能的值的數組中。

如果我編輯的字段的名稱:

<input type="checkbox" value="1" name="purpose[abc]" /> 

甚至將值更改爲「」,驗證通過。它忽略了所需的規則和我自定義的回調。

有人有關於如何處理這個問題的想法?

回答

10

數組必須傳遞給你的set_rules調用後綴打開/關閉方括號,就像這樣:

$this->form_validation->set_rules('checkboxes[]', 'My Checkboxes', 'required'); 

還有的CI用戶指南中更多的細節 - http://ellislab.com/codeigniter/user_guide/libraries/form_validation.html#arraysasfields

爲了應對檢查對於您的複選框值爲多個值之一,您需要創建自定義回調函數 - http://ellislab.com/codeigniter/user_guide/libraries/form_validation.html#callbacks

+0

感謝您的回覆。在弄亂了一下後,我發現我的問題好一點。你能否在我原來的問題中檢查編輯?再次感謝。 – RS7 2011-03-08 14:58:28

+0

獨特的驗證是不是,如果你知道我該怎麼做,請幫助。謝謝。 – 2014-08-25 09:46:38