2012-05-18 65 views
1

我已經創建了一個「驗證助手」,它應該有我所有的自定義驗證規則。問題是,當我在表單驗證中使用它們時,它們似乎被忽略。如果我將控件中的函數移動到進行表單驗證的地方,那麼所有的東西就像一個魅力一樣。我的驗證助手是自動加載的。CodeIgniter:自定義驗證規則不能在助手中?

如果我把它們放在助手中,我有什麼理由不能使用這些驗證函數?謝謝。

回答

4

輔助函數和控制器中的函數明顯不同。

創建extendedMY_Form_validation.phplibraries/,加上有最後的功​​能設置的規則沒有callback_並不僅僅是他們的函數名。

例子:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class MY_Form_validation extends CI_Form_validation { 

    /* set_rule('custom_require') */ 
    function custom_require($str) { 

     return (bool)$str; 

    } 

} 
+0

該文件應該命名爲「MY_Form_validation.php」,而不是「 My_Form_validation.php'。注意'MY_'中的大寫'Y'。 – Sparky

+0

你是對的,現在已經改變了。 –

+0

我創建了一個名爲'validations.php'的庫,我寫了「class Validations extends CI_Form_validation {」。我寫了一條規則,如「trim | required | enforce_password_policy」。但事情不起作用。 :(請幫助我 – Hussain

1

羅賓的答案是對付它的最簡單的方法;然而,爲什麼你不能是這樣的:

看看在您的系統/庫/ Form_Validation.php,行:587

if (! method_exists($this->CI, $rule)) 
{ 
    continue; 
} 

此檢查是在所有的回調完成。幫助程序不是類&未加載到CI實例中 - 因此無法從Form_Validation庫中獲得(因爲它使用此方法進行了特定編碼)