我目前在代码点火器中对动态表单进行验证存在问题。
<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将这些输入组乘以无限次。有没有人对如何解决这个问题有任何想法?
答案 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;
}
}