2014-04-17 38 views
0

我已經創建了以下方法以對提交的數據進行驗證。Kohana - 規則方法拋出錯誤

public function validate_create($array) { 

    $array = Validation::factory($array) 
     -> rules('username', $this - > _rules['username']); 

    return $array; 
} 

的規則被定義爲

protected $_rules = array(
    'username' = > array(
     'not_empty' = > NULL, 
     'min_length' = > array(6), 
     'max_length' = > array(32), 
    ) 
); 

試圖執行檢查()方法時,該代碼是拋出以下異常。

ErrorException【警告】:call_user_func_array()預計參數1 是一個有效的回調,沒有數組或字符串給

任何一個可以建議如何解決這個問題呢?

在signup.php用戶名輸入字段被定義爲

<?PHP的回波形式::標籤( 'USER_NAME', '用戶名')? > <?php echo Form :: input('username'); ? >

回答

1

直接構建Validation對象的格式與$_rules數組的格式不同。

您可以看到正確的方法簽名和定義documented here,並且最好也可以閱讀signature for Validation::rule

簡而言之,rules()方法想要一個數組列表,其中每個內部數組的第一個元素是驗證函數,第二個參數數組傳遞給它。

例如

$rules = array(
    array('not_empty', NULL), 
    array('min_length', array(':value', 6)) 
); 

$v = Validation::factory($values) 
    ->rules('fieldname', $rules); 

注意,這是比您正在嘗試使用其中鍵是驗證函數和參數的值$_rules陣列(地圖)格式不同。

Aslo,有什麼理由建立自己的驗證功能,而不是使用驗證的ORM::rules() method

+0

我只是試圖從kohana書(雙傑森達斯特魯漢)學習kohana我下載。我嘗試了他的一個例子。謝謝你的時間。 – logeeks