2012-12-26 63 views
0

我有一個文本框組像下面笨表單驗證滿足多種輸入型文本

<input type="text" size="10" value="<?php echo set_value('sizes[]'); ?>" name="sizes[]"/> 
<input type="text" size="10" value="<?php echo set_value('sizes[]'); ?>" name="sizes[]"/> 
<input type="text" size="10" value="<?php echo set_value('sizes[]'); ?>" name="sizes[]"/> 
<input type="text" size="10" value="<?php echo set_value('sizes[]'); ?>" name="sizes[]"/> 
<input type="text" size="10" value="<?php echo set_value('sizes[]'); ?>" name="sizes[]"/> 

那麼如果我設置驗證規則,如下面

array(
'field' => 'sizes[]', 
'label' => 'SIZES', 
'rules' => 'required|xss_clean' 
), 

再笨檢查每一個輸入框的值。如果每個文本框都填滿,則codeigniter返回true。但我想得到,如果其中任何人填補然後返回true

我該怎麼做?

感謝

+0

爲什麼你使用name =「sizes []」作爲html元素的名字? – kiriappa

+0

你可以簡單地用「||」 (或)條件。但我不明白你的HTML元素的命名約定。 – kiriappa

+0

從你的代碼中不太清楚你想實現什麼......你想存儲數組大小[]中的字段名稱嗎? – esp

回答

1

您可以創建在您的控制器自定義驗證功能,並實現對輸入自己的支票。首先,添加新的功能控制器:

function _is_valid($str, $field_name) 
{ 
    //First we see if the field name we are checking has multiple values 
    if (!is_array($this->input->post($field_name))) 
     return false; 

    //Let's get the posted values and see if any of them has a value: 
    foreach ($this->input->post($field_name) as $value) 
     if (strlen($value)) return true; 

    //If we get here that means there was no value posted: 
    return false; 
} 

接下來,更改規則的領域:

'rules' => 'required|xss_clean' 

要:

'rules' => 'callback__is_valid[sizes]|xss_clean' 

您可以瞭解更多關於自定義驗證功能:

[http://ellislab.com/codeigniter/user-guide/libraries /form_validation.html#callbacks] [1]