我使用Yii生成单选按钮 代码看起来像
<span class="gender">
<?php echo CHtml::activeRadioButton($model,'gender',array('value' => 'male')); ?>
</span>
<span class="gender">
<?php echo CHtml::activeRadioButton($model,'gender',array('value' => 'female')); ?>
</span>
它会生成下一个HTML代码
<span class="gender">
<input id="ytweb\models\register_gender" type="hidden" value="0" name="web\models\register[gender]">
<input value="male" class="male" name="web\models\register[gender]"id="web\models\register_gender" type="radio"></span>
<span class="gender">
<input id="ytweb\models\register_gender" type="hidden" value="0" name="web\models\register[gender]">
<input value="female" class="female" name="web\models\register[gender]" id="web\models\register_gender" type="radio">
</span>
当我从这个表格获得POST时,如果我检查了女性它会返回女性,但是如果我对男性进行了检查则会返回0.我认为这是因为相同的输入ID。但我怎么能避免呢?
答案 0 :(得分:5)
您可以将activeRadioButton
配置为不输出值为0
的“保护输入”。通过将参数'uncheckValue' => null
作为选项数组的一部分传递来执行此操作:
echo CHtml::activeRadioButton($model,'gender',
array('value' => 'male', 'uncheckValue' => null));
echo CHtml::activeRadioButton($model,'gender',
array('value' => 'female', 'uncheckValue' => null));
尽管如此,使用activeRadioButtonList
是最好的选择。您可以配置其template
参数以指定自定义HTML:
$genders = array('male' => 'male', 'female' => 'female');
$options = array(
'template' => '<span class="gender">{input</span>',
'uncheckValue' => null,
);
echo CHtml::activeRadioButtonList($model, 'genger', $genders, $options);