2013-02-27 46 views
0

嘎..我已經花了很長時間在這方面,但我相信我已經找到了問題。Codeigniter表單驗證,自定義檢查不工作,如果該字段不是必需的

基本上我有一個隱藏的字段,當用戶點擊圖像時會填充該字段。

它需要用戶點擊圖像,但我不希望通用表單錯誤消息與CI表單驗證類進行'required'檢查。

因此,我很快在擴展表單驗證類中創建了image_required函數,並設置了一條規則,以便將此規則應用於隱藏字段。

function image_required($str) 
    { 

    $CI =& get_instance(); 

    $CI->form_validation->set_message('image_required','Please click the image above.'); 

    if($str != '') 
    { 
     return TRUE; 
    } 
    else 
    { 
     return FALSE; 
     } 
} 

如果隱藏字段爲空,則不會調用錯誤。

我現在認爲這是因爲CI說這個字段是空的,但它不是'必需的',因此我們將忽略該字段的所有其他驗證規則。它是否正確?

如果是的話我該怎麼辦,要求設置這個字段,但有一個自定義的錯誤信息?

劉海頭

感謝

+0

這是一個庫還是一個幫助器?你如何在你的驗證集規則中調用? – tomexsans 2013-02-27 13:45:42

回答

2

如果你看一下源代碼(V2.1.3)的 '_execute' 程序(系統/庫/ Form_validation.php),你會看到一行486

 // If the field is blank, but NOT required, no further tests are necessary 

所以你是正確的,它需要被要求,然後它會處理你的規則。

爲了解決這個問題,您可以擁有一個仍然處理規則的非必需空白字段,您應該通過在應用程序/庫文件夾中創建一個名爲'MY_Form_validation.php'的文件來覆蓋'_execute'方法(I想想,你可能需要檢查你是如何擴展一個現有的庫),然後複製'_execute'方法並修改代碼以繼續處理非必需的空白條目。

+0

對不起,我剛剛注意到你已經擴展了課程。只需改變_execute方法。 – Stevo 2013-02-27 13:50:49

+1

完美。謝謝Stevo。花了我一段時間,但嘿..我到了那裏:P – 2013-02-27 14:40:00