2012-04-03 4 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]' /> 

Я прочитал всю структуру в CodeIgniter, используя $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, чтобы попытаться выяснить, что происходит? Он находится в системе/libraries/form_validation. – musoNic80

ответ

0

Это может быть стоит попробовать ... Измените правила:

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

И то же самое для второй группы. Обратите внимание на дополнительные скобки в имени поля. У меня не было возможности проверить это, я боюсь, но стоит поскорее попробовать! :-)

+0

Я тоже попробовал. К сожалению, нет. Спасибо за предложение. –