在使用单个表单进行创建和更新时,如何在yii中默认选中复选框

时间:2013-04-26 07:01:26

标签: forms yii

我正在使用单一表单来创建和更新表单。我需要在下面的表单中选中复选框

<div class="row" style='float:left;;margin-left:5px'>
        <?php echo '<span for="label" style="margin-bottom:5px;font-size: 0.9em;font-weight: bold;">Label</span><br />'; ?>
        <?php echo $form->checkBox($model,'label_name',array('value'=>1,'uncheckValue'=>0,'checked'=>'checked','style'=>'margin-top:7px;')); ?>
        <?php echo $form->error($model,'label_name'); ?>
    </div>

我使用上面的代码来实现相同的目的我没有得到预期的结果。在更新表单时,即使未经检查也会显示已检查

5 个答案:

答案 0 :(得分:9)

我得到了解决方案我使用代码本身请看看

<div class="row" style='float:left;;margin-left:5px'>
        <?php echo '<span for="label" style="margin-bottom:5px;font-size: 0.9em;font-weight: bold;">Label</span><br />'; ?>
        <?php echo $form->checkBox($model,'label_name',array('value'=>1,'uncheckValue'=>0,'checked'=>($model->id=="")?true:$model->label_name),'style'=>'margin-top:7px;')); ?>
        <?php echo $form->error($model,'label_name'); ?>
    </div

答案 1 :(得分:4)

更好的解决方案是在控制器中设置值:

public function actionCreate() {
    $model = new ModelName();

    if (isset($_POST[$model])) {
        // ... save code here
    }
    else {
        // checkboxes for label 'label_name' with value '1' 
        //   will be checked by default on first load
        $model->label_name = true; // or 1
    }

    $this->render('create', array(
        'model' => $model,
    ));
}

或者更好的是,在模型的afterConstruct()函数中:

protected function afterConstruct() {

    parent::afterConstruct();

    $this->label_name = true; // or 1
}

答案 2 :(得分:2)

按照以下链接

http://www.bsourcecode.com/2013/03/yii-chtml-checkboxlist

我希望这个链接很有用。

答案 3 :(得分:1)

您只需在模型中设置默认值:

public $label_name = true;

答案 4 :(得分:0)

您的要求是选中复选框以进行创建和更新。 checked = checked将在创建表单上达到目的,但在更新时,您必须通过代码处理它