假设我有一个显示组的HTML表单,并且在每个组中我有一个名称和多个用户。以下是HTML结构示例,简化为仅包含相关元素:
Group Name: <input name='group[0][name]' />
User 1: <input name='group[0][users][0]' />
User 2: <input name='group[0][users][0]' />
User 3: <input name='group[0][users][0]' />
<hr />
Group Name: <input name='group[1][name]' />
User 1: <input name='group[1][users][0]' />
User 2: <input name='group[1][users][0]' />
User 3: <input name='group[1][users][0]' />
我使用$this->input->post('group');
将整个结构读入CodeIgniter,生活很美好。
我想使用自定义功能添加表单验证。如果我这样做:
$this->form_validation->set_rules('group[]', 'Group', 'callback_verifyGroupData');
我的verifyGroupData($group_data)
函数会为每个组调用一次。在这个例子中,它被调用两次,每次传入组数据。这是现在的虚函数:
function verifyGroupData($data) {
log_message('info','KRYSTODO: verifyGroupData data ' . print_r($data,true));
$this->form_validation->set_message('verifyGroupData', 'This is not entirely checked yet.');
return false;
}
问题是我需要能够为每个组分别显示错误。现在,当我想在HTML视图中添加单个错误显示时,我会这样做:
<?php if(form_error('group[]')) {
echo '<div class="validationError">' . form_error('group[]') . '</div>';
}?>
问题是此代码不区分组[0]与组[1]的错误集。
根据CodeIgniter文档,我应该可以这样做:
$this->form_validation->set_rules('group[0]', 'Group', 'callback_verifyGroupData');
$this->form_validation->set_rules('group[1]', 'Group', 'callback_verifyGroupData');
实际上,这并不会导致我的verifyGroupData()
被调用。
你能解决这个问题吗?
答案 0 :(得分:0)
这可能值得一试...... 将您的规则更改为:
$this->form_validation->set_rules('group[0][]', 'Group','callback_verifyGroupData');
第二组也是如此。请注意字段名称中的额外括号。 没有机会测试它我害怕,但值得快速尝试! :-)