Сброс выпадающих значений после неудачной проверки в CodeIgniter - PullRequest
1 голос
/ 13 июля 2011

У меня очень простая форма голосования.Он содержит одно текстовое поле для идентификатора записи, а затем пять раскрывающихся списков.Единственная проверка выполняется в текстовом поле, но если это не удается, я хочу, чтобы все раскрывающиеся списки сохранили свои значения.

Например, пользователь вводит 12345 в качестве записи, а затем выбирает опцию A из всехпять выпадающих.(Опция B является значением по умолчанию.) Если 12345 не проходит проверку, раскрывающиеся списки все равно следует установить на параметр A, когда отображается ошибка проверки.Этого не происходитЯ использую form_dropdown помощника формы, чтобы создать выпадающие списки.Есть идеи?Как видите, я попытался использовать set_value в раскрывающемся списке с именем q1, но это не работает.Сама проверка работает.

Вот код для формы:

<?php
$hidden = array('dot_judge_id' => $this->session->userdata('dot_judge_id'));

echo form_open('vote/create'); 
$entry_code_data = array(
    'name' => 'entry_code',
    'id' => 'entry_code',
    'value' => set_value('entry_code')
);

echo form_hidden($hidden);

$score_options = array('1'=>'1 (lowest)', '2'=>'2','3'=>'3', '4'=>'4','5'=>'5 (highest)');
?>

<p><label for="entry_code">Entry code: </label><?php echo form_input($entry_code_data); ?></p>
<p><label for="q1">Question 1: </label><?php echo form_dropdown('q1', $score_options, set_value('q1')); ?></p>
<p><label for="q2">Question 2: </label><?php echo form_dropdown('q2', $score_options, ''); ?></p>
<p><label for="q3">Question 3: </label><?php echo form_dropdown('q3', $score_options, ''); ?></p>
<p><label for="q4">Question 4: </label><?php echo form_dropdown('q4', $score_options, ''); ?></p>
<p><label for="q5">Question 5: </label><?php echo form_dropdown('q5', $score_options, ''); ?></p>

<p><?php echo form_submit('submit', 'Submit vote'); ?></p>                

<?php echo form_close(); ?>
<?php echo validation_errors('<p class="error">', '</p>');?> 

У меня есть кто-то на форуме CodeIgniter, который сказал мне, чтобы использовать set_select, но я не думаю, что яможно использовать set_select, потому что я не записываю отдельные значения поля выбора, и при этом я не пытаюсь предоставить жестко заданное значение по умолчанию.Мне нужно сбросить выпадающие значения до значений, выбранных пользователем до запуска проверки формы.Я использую функцию form_dropdown, так как я могу получить фактическое выбранное значение для передачи во второй параметр set_select?Согласно документации set_select,

Первый параметр должен содержать название меню выбора, второй параметр должен содержать значение каждого элемента

Был также комментарий к этому сообщению , в котором говорилось, что используется set_value - echo form_dropdown('events', $options, set_value('events'), $firstItem);.Комментарий получил три голоса, поэтому я предполагаю, что он работает для некоторых людей, но ничего не делает для меня.Этот вопрос был годик;возможно, это работало в более старой версии CI, но не в самой новой.В любом случае, ДОЛЖЕН ли быть способ иметь «липкие» значения раскрывающегося списка при создании раскрывающихся списков с помощью form_dropdown, не так ли?Я не могу себе представить, что мне пришлось бы проделать длинный путь и создать выпадающий список, просматривая массив значений и выводя каждую строку параметров отдельно;такой вид побеждает цель использования чего-то вроде CI.

1 Ответ

4 голосов
/ 13 июля 2011

Помните, что set_value() требует второй параметр, который является значением каждого элемента, поэтому вы можете заставить его работать, добавив $this->input->post('q1') в качестве второго параметра.

Вместо:

<?php echo form_dropdown('q1', $score_options, set_value('q1')); ?>

Вы бы написали:

<?php echo form_dropdown('q1', $score_options, set_value('q1', $this->input->post('q1'))); ?>

Надеюсь, это поможет.

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