Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Saving a checkbox value in Yii

Tags:

yii

I can't figure out how to properly save checkbox values in Yii. I have a MySQL column, active, defined as a tinyint. I have the following form creation code, which correctly shows the checkbox as checked if the value is 1 and unchecked if 0:

    <?php echo $form->labelEx($model,'active'); ?>
    <?php echo $form->checkBox($model,'active'); ?>
    <?php echo $form->error($model,'active'); ?>

And the code to save the form correctly changes other, text-based values:

public function actionUpdate($id)
{
    $model=$this->loadModel($id);

    if(isset($_POST['Thing']))
    {
        $model->attributes=$_POST['Thing'];
        if($model->save())
            $this->redirect(array('thing/index'));
    }

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

The value of active is not saved. Where am I going wrong?

like image 787
Matt Hampel Avatar asked Jun 02 '11 19:06

Matt Hampel


2 Answers

You can use htmlOptions array to specify value attribute. Below is the code example:

<?php echo $form->labelEx($model,'active'); ?>
<?php echo $form->checkBox($model,'active', array('value'=>1, 'uncheckValue'=>0)); ?>
<?php echo $form->error($model,'active'); ?>

Since version 1.0.2, a special option named 'uncheckValue' is available that can be used to specify the value returned when the checkbox is not checked. By default, this value is '0'. (This text is taken from YII Documenration)

like image 128
D3 K Avatar answered Sep 17 '22 08:09

D3 K


For every input that you are accepting from user, you need to define it in model::rule(). is active defined there in rule()?

like image 45
Dafeng Avatar answered Sep 17 '22 08:09

Dafeng