可以說我有一個顯示組的HTML表單,並且在每個組中我都有一個名稱和多個用戶。以下是一個示例HTML結構,簡化爲只包含相關元素:CodeIgniter和多維表單元素名稱的驗證
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');
和壽命良好。
我想用自定義函數添加表單驗證。如果我這樣做:
$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中。 – musoNic80 2012-04-03 17:59:57