Допустим, у меня есть 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]' />
Я прочитал всю структуру в CodeIgniter, используя $this->input->post('group');
, и жизнь хороша.
Я хочу добавить проверку формы с помощью пользовательской функции. Если я сделаю это:
$this->form_validation->set_rules('group[]', 'Group', 'callback_verifyGroupData');
my 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()
вообще звонят.
Можете ли вы предложить подход к этой проблеме?