CodeIgniter и проверка имен элементов многомерных форм - PullRequest
0 голосов
/ 03 апреля 2012

Допустим, у меня есть 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() вообще звонят.

Можете ли вы предложить подход к этой проблеме?

1 Ответ

0 голосов
/ 03 апреля 2012

Возможно, стоит попробовать ... Измените ваши правила на:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...