2012-04-03 27 views
0

可以說我有一個顯示組的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()越來越被調用。

你能提供一個解決這個問題的方法嗎?

+0

您是否嘗試過調試form_validation庫本身來試圖找出發生了什麼?它在system/libraries/form_validation中。 – musoNic80 2012-04-03 17:59:57

回答

0

這可能是值得一試... 更改規則:

$this->form_validation->set_rules('group[0][]', 'Group','callback_verifyGroupData'); 

與同爲第二組。請注意字段名稱中的額外括號。 恐怕沒有機會測試它,但值得一試! :-)

+0

我也試了一下。不幸的是,沒有去。感謝您的建議。 – 2012-04-04 15:33:50