2010-01-09 3 views
4

У меня есть форма, которая извлекает данные из базы данных. Код работает отлично, если это поле ввода, но я не могу получить последние данные $ _POST для переключателей.Repopulate radio buttons on failed validation

Это работает для ввода текстового поля. Я получаю значения по умолчанию, извлеченные из БД при первой загрузке, и я могу получить новый вход (если есть) от пользователя, изменяет поле ввода при неудачной проверке.

<?php echo form_input('email',set_value('email', $email)); ?> 

Вот код для одного из моих переключателей. Он работает, когда я извлекаю данные из БД, но если форма обновляется из-за неудачной проверки, я не уверен, как я могу показать, что выбрал пользователь.

<input type="radio" name="gender" value="male" <?php if($gender == "male") echo "checked"; ?> />Male 

Я играл с set_radio, но я столкнулся с той же проблемой. Это работает при начальной загрузке, но как насчет неудачной проверки? Я попытался метать «set_radio» во втором параметре, но это тоже не сработало.

if($gender == "male") { 
    echo form_radio('gender', 'male',TRUE) 
} else { 
    echo form_radio('gender', 'male') 
} 

ответ

-3

Похоже, что я смог использовать тот же код, что и для текстового поля.

3

От пользователя CodeIgniter UserGuide.

<input type="radio" name="myradio" value="1" <?php echo set_radio('myradio', '1', TRUE); ?> /> 

<input type="radio" name="myradio" value="2" <?php echo set_radio('myradio', '2'); ?> /> 

Первый параметр является именем радиостанции, второе значение текущего радиоприемника, а третий вариантом по умолчанию, если нет данных для заполнения поля с.

+0

Это правильный ответ. – stormwild

15

Кажется, есть ошибка. Если вы не включили правило валидации для переключателей, они не будут повторно заполнены после обратной передачи.

Вы можете включить правило, подобное этому.

$this->form_validation->set_rules('active', 'active', 'required'); 

, если у вас ..

<div id="active-container"> 

    <input type="radio" name="active" id="lesson-active" value="1" <?php echo set_radio('active', '1', TRUE); ?> /> 
    <label for="lesson-active">Active</label> 

    <input type="radio" name="active" id="lesson-deactivated" value="2" <?php echo set_radio('active', '2'); ?> /> 
    <label for="lesson-deactivated">Deactivated</label> 

</div> 
+0

Спасибо, что помогло :) –

+0

В качестве дополнительной заметки вы также можете заменить «обязательный» на «необязательный», если все, что вам нужно, это преимущества 'set_value()', 'set_radio()' и т. Д., Тогда CI отслеживать поля. Я думаю, что значение «null» также будет работать, но ключевое слово «optional» читается лучше. – farinspace

2

После просмотра нескольких примеров коды, я заметил, что set_radio функции должны была быть в параметре ценностной form_radio функции. Так как у вас не может быть эха в эхо, я создал «взломать», поместив пустую строку в параметр значения, а затем добавив к ней функцию set_radio. Вот мой пример:

echo form_radio('gender', 'M', ''.set_radio('gender', 'M'), $js)."Male "; 
echo form_radio('gender', 'F', ''.set_radio('gender', 'F'), $js)."Female ";