2013-02-18 48 views
1

所以我有这样的代码......嗯,这仅仅是一个样品Yii的单选按钮不同型号

<div class="row"> 
    <?php echo $form->labelEx($model,'First_Session'); ?> 
    <?php echo $form>radioButton($model,'first_session',array('c'=>'')/**array('size'=>45,'maxlength'=>45)*/); ?> 
    <?php echo $form->error($model,'first_session'); ?> 
</div> 

<div class="row"> 
    <?php echo $form->labelEx($model,'Second_Session'); ?> 
    <?php echo $form->radioButton($model,'second_session',array('c'=>'Checked')/**array('size'=>45,'maxlength'=>45)*/); ?> 
    <?php echo $form->error($model,'second_session'); ?> 
</div> 

所以我的问题是如何在这里适用的单选按钮....看,我有两个字段,第一次和第二次会议,但我需要做的是当第一次会议被标记为第二次会议不能。我对yii仍然陌生。

+0

是输入有效的,如果没有'first_session'也不'second_session'检查? – topher 2013-02-18 16:28:50

+0

该代码只是一个例子:D但是是的 – Illyasviel 2013-02-18 16:31:22

回答

0

使用CHtml::radioButtonList()而不是radioButton()。您可以在模型中声明额外的变量$session_val,并使用它在验证之前设置所选“会话”的值。

型号

class Model1{ 
    .... 
    public $session_val; 
    .... 
    public function beforeValidate(){ 
     unset($this->first_session); 
     unset($this->second_session); //unset first_session and second_session 
     if(isset($this->session_val)) 
      $this->$session_val=true; //set first_session or second_session 
     else 
      $this->addError(...); 
     return parent::beforeValidate(); 
    } 

    public function rules(){ 
     return array(
      ... 
      array('session_val','safe'), 
      ... 
     ); 
    } 

视图

<?php echo $form->labelEx($model,'session_val'); ?> 

<?php echo $form->radioButtonList($model,'session_val',array('first_session'=>'First Session','second_session'=>'Second Session'));?> 
+0

我有两个领域在同一模型,当我想检查第一届会议第二届会议不应该或不能被检查,因为第一个已经检查,我的问题是我不知道如何去做 – Illyasviel 2013-02-18 16:40:13

+0

这应该引导你走向正确的方向。 – topher 2013-02-18 16:57:43