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 检查每个输入框的值。如果每个文本框都已填满,则 codeigniter 返回 true。但我想得到如果他们中的任何一个人填满然后返回 true

我怎样才能做到这一点??

谢谢

4

1 回答 1

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]

于 2012-12-27T11:05:10.390 回答