В Codeigniter, как проверить радио кнопки (без "проверено")? - PullRequest
0 голосов
/ 10 января 2012

В 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 переключателя и сообщение об ошибке, если ни одна из них не выбрана.

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

Ответы [ 6 ]

3 голосов
/ 23 июля 2013

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

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

1 голос
/ 10 августа 2017

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

<?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"');
?>

Чтобы расширить то, что написал Андрей, мы возьмем значение представленной радиокнопки, а затем сделаем TRUE или FALSE, чтобы установить проверенное значение.

1 голос
/ 10 января 2012

Вы пробовали проверить статус ON?

if($this->input->post('food') === 'on')
0 голосов
/ 27 мая 2013

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

<?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..
}
0 голосов
/ 10 января 2012

Использование Проверка формы :

Контроллер:

    $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');

'food'означает имя вашей радиокнопки.

' Радиокнопка '- «человеческое» имя для этого поля

«обязательное» - правило проверки для этого поля формы

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

View:

<?=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 переключателямис тем же именем 'radio', что и в контроллере.

0 голосов
/ 10 января 2012

Используя библиотеку Проверка формы , вы можете достичь этого с помощью следующего:

Контроллер

$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>
...