Codeigniter表单验证多维表单数据

时间:2011-08-24 13:45:02

标签: php codeigniter

我目前在代码点火器中对动态表单进行验证存在问题。

<input name="item1_name[0][PostTitle]">
<input name="item1_name[0][PostSubject]">
<input name="item1_name[0][PostMessage]">
<input name="item1_name[0][PostSlug]">

<input name="item1_name[1][PostTitle]">
<input name="item1_name[1][PostSubject]">
<input name="item1_name[1][PostMessage]">
<input name="item1_name[1][PostSlug]">

以上是我表格的一部分。此表单将数据作为数组提交。我想要做的是能够使用codeigniter表单验证器来验证所有字段。目前的问题是表单是动态的。前端允许使用javascript将这些输入组乘以无限次。有没有人对如何解决这个问题有任何想法?

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法......

//get the array 
$item1_name = $this->input->post('item1_name', TRUE);

foreach ($item1_name as $key => $item1_name)
{
     // Set the rules
     $this->form_validation->set_rules($key."[PostTitle]", "PostTitle", "trim|required");
     $this->form_validation->set_rules($key."[PostSubject]", "PostSubject", "trim|required");
     $this->form_validation->set_rules($key."[PostSubject]", "PostSubject", "trim|required");
     $this->form_validation->set_rules($key."[PostSlug]", "PostSlug", "trim|required");
}

答案 1 :(得分:0)

编写自己的验证函数并按照您的喜好处理数组:

$this->form_validation->set_rules('item1_name', 'Item Name', 'callback_item_name_check');

function item_name_check($value)
{
    // evaluate $value and return TRUE or FALSE with error message
    if ($value == 'test')
    {
        $this->form_validation->set_message('item_name_check', 'You need to enter something else.');
        return FALSE;
    }
    else
    {
        return TRUE;
    }

}

更多CodeIgniter documentation