【发布时间】:2012-04-03 13:04:26
【问题描述】:
假设我有一个显示组的 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() 被调用。
你能提供解决这个问题的方法吗?
【问题讨论】:
-
您是否尝试过调试 form_validation 库本身以尝试找出发生了什么?它在 system/libraries/form_validation 中。
标签: php codeigniter