2016-12-05 48 views
0

陣列字段的最小/最大長度我有內部的$_POST變量的陣列,我想驗證它:如何指定在笨

$this->validator->set_rules('questions[]', 'questions', 'required|min_length[10]'); 

在這種情況下,我想在陣列questions具有長度至少10個,問題是,這是不行的,對數組長度爲< 10驗證未檢測到錯誤,這是我甩了後例如:

array(1) { ["questions"]=> array(0) {} }

當我運行:

if($this->validator->run() == false){...}else{...}

方法返回true並且代碼將在else進入。

有人知道我該怎麼做?

回答

0

你可以寫一個回調函數,我舉一個例子。 假設您想限制陣列的最小10個值。

$this->validator->set_rules('questions[]', 'questions', required|callback_checkLength'); 

而且寫這樣的功能:

function checkLength(){ 
    if(count($this->input->post("questions[]") < 10) { return false }; 
    else { return true; } 
} 

希望這有助於你。

+0

使用這種方法,我必須聲明我的變量'$ POST'(被驗證的變量)爲全局變量,因爲函數是針對數組'questions'中的每個元素調用的,即使我使用字段'questions'而不是'question []',因爲在第一種情況下,CI不會將任何參數作爲參數傳遞給回調函數。我可以隨它去,但我想知道是否有其他選擇... –