Yii: радио-кнопка дает значение 0

Я использую переключатели, чтобы выбрать правильный вариант из числа возможных. На данный момент у меня есть четыре варианта формулировки вопроса, но возможный вариант ответа может увеличиться. Проблема, с которой я сталкиваюсь, заключается в том, что следующий код работает только для последней опции, иначе он дает значение 0 при отправке формы. Также, пожалуйста, предложите, как я могу использовать radioButtonList со следующим кодом, так как я хочу отображать переключатели в разных DIV. Пожалуйста, проверьте следующий код и совет. Заранее спасибо

<div class="form-group" id="statement_div">
    <?php echo $form->labelEx($model,'statement', array('class' => 'col-md-3 control-label', 'id'=>'question_label')); ?>
    <div class="col-md-9">
        <?php echo $form->textArea($model,'statement',array('rows'=>3, 'cols'=>50, 'class'=> 'form-control')); ?>
        <?php echo $form->error($model,'statement'); ?>
    </div>

    <div class="clearfix"></div>
</div>


<div class="form-group" id="option1_div">
    <?php echo $form->labelEx($model,'option_1', array('class' => 'col-md-3 control-label', 'id'=>'question_label')); ?>
    <div class="col-md-9">
        <?php echo $form->textArea($model,'option_1',array('rows'=>3, 'cols'=>50, 'class'=> 'form-control', 'readonly'=>$readonly)); ?>


        <?php echo $form->error($model,'option_1'); ?>
    </div>
    <?php echo $form->radioButton($model,'correct_option',array('value'=>'1')) . ''; ?>

    <div class="clearfix"></div>
</div>

<div class="form-group" id="option2_div">
    <?php echo $form->labelEx($model,'option_2', array('class' => 'col-md-3 control-label', 'id'=>'question_label')); ?>
    <div class="col-md-9">
        <?php echo $form->textArea($model,'option_2',array('rows'=>3, 'cols'=>50, 'class'=> 'form-control','readonly'=>$readonly)); ?>


        <?php echo $form->error($model,'option_2'); ?>
    </div>
    <?php echo $form->radioButton($model,'correct_option',array('value'=>'2')) . ''; ?>

    <div class="clearfix"></div>
</div>

<div class="form-group" id="option3_div">
    <?php echo $form->labelEx($model,'option_3', array('class' => 'col-md-3 control-label', 'id'=>'question_label')); ?>
    <div class="col-md-9">
        <?php echo $form->textArea($model,'option_3',array('rows'=>3, 'cols'=>50, 'class'=> 'form-control', 'readonly'=>$readonly)); ?>


        <?php echo $form->error($model,'option_3'); ?>
    </div>
     <?php echo $form->radioButton($model,'correct_option',array('value'=>'3')) . ''; ?>

    <div class="clearfix"></div>
</div>

<div class="form-group" id="option4_div">
    <?php echo $form->labelEx($model,'option_4', array('class' => 'col-md-3 control-label', 'id'=>'question_label')); ?>
    <div class="col-md-9">
        <?php echo $form->textArea($model,'option_4',array('rows'=>3, 'cols'=>50, 'class'=> 'form-control','readonly'=>$readonly)); ?>


        <?php echo $form->error($model,'option_4'); ?>
    </div>
    <?php echo $form->radioButton($model,'correct_option',array('value'=>'4')) . ''; ?>
    <div class="clearfix"></div>
</div>

2 ответа

Если вы не используете radioButtonList, вам придется установить каждый radioButton's uncheckValue в null,

http://www.yiiframework.com/wiki/315/using-multiple-radio-button/

<div class="form-group" id="statement_div">
    <?php echo $form->labelEx($model,'statement', array('class' => 'col-md-3 control-label', 'id'=>'question_label')); ?>
    <div class="col-md-9">
        <?php echo $form->textArea($model,'statement',array('rows'=>3, 'cols'=>50, 'class'=> 'form-control')); ?>
        <?php echo $form->error($model,'statement'); ?>
    </div>

    <div class="clearfix"></div>
</div>


<div class="form-group" id="option1_div">
    <?php echo $form->labelEx($model,'option_1', array('class' => 'col-md-3 control-label', 'id'=>'question_label')); ?>
    <div class="col-md-9">
        <?php echo $form->textArea($model,'option_1',array('rows'=>3, 'cols'=>50, 'class'=> 'form-control', 'readonly'=>$readonly)); ?>


        <?php echo $form->error($model,'option_1'); ?>
    </div>
    <?php echo $form->radioButton($model,'correct_option',array('value'=>'1','uncheckValue' => null)); ?>

    <div class="clearfix"></div>
</div>

<div class="form-group" id="option2_div">
    <?php echo $form->labelEx($model,'option_2', array('class' => 'col-md-3 control-label', 'id'=>'question_label')); ?>
    <div class="col-md-9">
        <?php echo $form->textArea($model,'option_2',array('rows'=>3, 'cols'=>50, 'class'=> 'form-control','readonly'=>$readonly)); ?>


        <?php echo $form->error($model,'option_2'); ?>
    </div>
    <?php echo $form->radioButton($model,'correct_option',array('value'=>'2','uncheckValue' => null))) . ''; ?>

    <div class="clearfix"></div>
</div>

<div class="form-group" id="option3_div">
    <?php echo $form->labelEx($model,'option_3', array('class' => 'col-md-3 control-label', 'id'=>'question_label')); ?>
    <div class="col-md-9">
        <?php echo $form->textArea($model,'option_3',array('rows'=>3, 'cols'=>50, 'class'=> 'form-control', 'readonly'=>$readonly)); ?>


        <?php echo $form->error($model,'option_3'); ?>
    </div>
     <?php echo $form->radioButton($model,'correct_option',array('value'=>'3','uncheckValue' => null))) . ''; ?>

    <div class="clearfix"></div>
</div>

<div class="form-group" id="option4_div">
    <?php echo $form->labelEx($model,'option_4', array('class' => 'col-md-3 control-label', 'id'=>'question_label')); ?>
    <div class="col-md-9">
        <?php echo $form->textArea($model,'option_4',array('rows'=>3, 'cols'=>50, 'class'=> 'form-control','readonly'=>$readonly)); ?>


        <?php echo $form->error($model,'option_4'); ?>
    </div>
    <?php echo $form->radioButton($model,'correct_option',array('value'=>'4','uncheckValue' => null))) . ''; ?>
    <div class="clearfix"></div>
</div>

Это потому что activeRadioButton генерирует непобедимое поле ввода с тем же именем для каждого флажка / радио (поэтому предыдущие значения перезаписываются этим полем в данных формы). Применять uncheckValue => null удалить это поле. Просто имейте в виду, что без этого поля, если использовать, не выбирайте радио / флажок, чем в данных формы не будет ключа correct_option,

<?php
echo $form->radioButton(
    $model,
    'correct_option',
    array(
        'value' => '4',
        'uncheckValue' => null,
    )
);
?>
Другие вопросы по тегам