2012-01-10 3 views
0

В Codeigniter я хотел бы проверить радиокнопки, но я не хочу выбирать его, когда пользователь загружает страницу (я имею в виду атрибут «checked»).В Codeigniter, как проверить радиокнопки (без "checked")?

Это то, что я сделал до сих пор ...

Мой файл вид:

<?=validation_errors()?> 
<form action="step1" method="post"> 
    <input name="food" type="radio" value="1" <?=set_radio('food', '1')?> /> 
    <input name="food" type="radio" value="2" <?=set_radio('food', '2')?> /> 
    <input name="food" type="radio" value="3" <?=set_radio('food', '3')?> /> 
</form> 

Мой файл контроллера:

$this->form_validation->set_rules('food', 'food', 'required'); 
if ($this->form_validation->run() == TRUE) redirect('step2'); 

Сообщение об ошибке появляется только если добавить поле, как <input type="text">. Но мое желание состоит в том, чтобы иметь только 3 переключателя и сообщение об ошибке, если ни один не выбран.

Вы знаете, как это сделать?

+0

Было бы полезно, если бы вы показали нам, что вы уже пробовали. В любом случае, используйте эту ссылку в качестве руководства: http://codeigniter.com/user_guide/libraries/form_validation.html – stefandoorn

+0

Вот ответ - http://stackoverflow.com/questions/2034185/repopulate-radio-buttons-on- неудачная проверка – Timur

+0

@stefandoorn Код добавлен. Спасибо, но я уже использую эту страницу руководства :) – Dacobah

ответ

0

Используя Form Validation библиотеку, вы можете добиться того, что со следующим:

контроллер

$this->form_validation->set_error_delimiters('', '<br>'); 
$this->form_validation->set_rules('type', '<b>Type</b>', 'trim|required|maxlength[1]|xss_clean'); 


Посмотреть

<label for="type_1">Is this type one, two or three? <b style="color: red">*</b></label></td> 

<input type="radio" name="type" id="type_1"<?php echo set_radio('type', '1'); ?> value="1"><label for="type_1">One</label> &nbsp; 
<input type="radio" name="type" id="type_2"<?php echo set_radio('type', '2'); ?> value="2"><label for="type_2">Two</label> 
<input type="radio" name="type" id="type_3"<?php echo set_radio('type', '3'); ?> value="3"><label for="type_3">Three</label> 
<span style="color: red; font-weight: bold"><?php echo form_error('type'); ?><?php echo isset($errors['type']) ? $errors['type'] : '' ?></span> 
+0

Я пробовал, но он не работает ... – Dacobah

0

Использование Form Validation:

Контроллер:

$this->load->library('form_validation'); 

    $this->form_validation->set_rules('food', 'Radio button', 'required'); 

    if ($this->form_validation->run() == FALSE) 
    { 
     $this->form_validation->set_message('required', 'Error message'); 
    } 

Здесь вы устанавливаете правила для радиокнопок:

$this->form_validation->set_rules('food', 'Radio button', 'required'); 

'пища' означает название вашей кнопки радио. 'Селективная кнопка'

- имя "человек" для этого поля

'требуется' - правила проверки для этого поля формы

С $ this-> form_validation-> Run() запустить библиотеку форм проверки arnd проверьте, прошла ли ваша форма (TRUE/FALSE).

Вид:

<?=validation_errors()?> 
    <form method="post"> 
     <input type="radio" name="food" value="1"> 
     <input type="radio" name="food" value="2"> 
     <input type="radio" name="food" value="3"> 

     <input type="submit" name="submit" value="submit"> 
    </form> 

Вот форма 3 радио кнопки с таким же названием «радио», как используется в контроллере.

+0

Что вы подразумеваете под типом = "food" ??? За исключением этой неуклюжий вещи, вы можете заметить, что остальная часть вашего кода очень похожа на мою. Мне это очень не очень ...:/ – Dacobah

+0

ooops .. мой плохой. type is "radio" name = "food" :) Извините – TNT

+0

ОК, сначала я неправильно понял вашу проблему. возможно, теперь это то, что вам нужно? – TNT

1

Вы пробовали проверить статус включения?

if($this->input->post('food') === 'on') 
0

Просмотр файла

<?php echo form_error('gender')?> 
<form name="frm" method="post"> 
<input type="radio" value="m" name="gender" /> Male <br /> 
<input type="radio" value="f" name="gender" /> Female <br /> 
<input type="radio" value="o" name="gender" /> Other 
<input type="submit" value="submit" name="btn" /> 
</form> 

Контроллер

public function index() 
{ 

    $this->form_validation->set_rules('field' => 'gender', 'label' => 'Gender', 'rules' => 'required'); 

    if($this->form_validation->run()==TRUE) 
    { 
     echo "hello wordl"; exit; 
    } 
    //Your view loading script.. 
} 
3

"требуетсяправило проверки не возвращает ERR или сообщение, когда форма содержит только переключатели ", из-за ошибки CodeIgniter 2. Подробнее см. Здесь - https://github.com/EllisLab/CodeIgniter/issues/138.

Я установил его просто, добавив скрытое поле, например. <input type="hidden" value="true" name="fix_radio_required">

+0

Спасибо, это помогло! – foxybagga

+0

Это уже исправлено или вам все еще нужно добавить скрытое поле? – Kat

1

Этот подход сработал для нас.

<?php 
$member_type = 1; 
    if(isset($_POST['member_type'])){ 
     $member_type = $_POST['member_type']; 
    } 
    echo form_radio("member_type", 1, $member_type == 1 ? TRUE : FALSE,' id="member_type" class="form-control"'); 

    echo form_radio("member_type", 2, $member_type == 2 ? TRUE : FALSE,' id="member_type" class="form-control"'); 
?> 

Чтобы расширить то, что Андрей написал, мы будем принимать значение кнопки, представленного радио, а затем сделать ИСТИНУ или ЛОЖЬ, чтобы установить проверенное значение.