2012-04-03 1 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');を使用してのCodeIgniterに構造全体を読んで、人生が良いです。

カスタム機能を使用してフォーム検証を追加したいと考えています。私はこれを行う場合:

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

verifyGroupData($group_data)機能は、各グループごとに1回呼び出されます。 。この例では、ここで今のダミー関数であるに渡されたグループデータを持つたびに、2回呼び出されます:

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

答えて

0

これは試してみる価値があるかもしれない...にあなたのルールを変更し :第二のグループのために

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

と同じ。フィールド名に余分な角括弧があることに注意してください。 テストする機会がありませんでした。恐れがありますが、すぐに試してみる価値があります! :-)

+0

私はこれも試してみました。残念ながら、行かない。提案していただきありがとうございます。 –

関連する問題