2013-02-04 34 views
1

我生成使用Yii 单选按钮的代码看起来像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。但我怎么能避免它?

回答

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); 
+0

它确实很有效!谢谢! –

+0

@NikitaPlatonenko:您可能仍要使用'activeRadioButtonList'。这是一个更好的匹配工作。 – Jon