i’m trying to do a list of checkboxes, in a update form, but don’t save in the data base, neither set the form with records in the table, my form is called “tuscategorias.php” and have this:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'tuscategorias-form',
'enableAjaxValidation'=>false,
)); ?>
<?php echo $form->errorSummary($model); ?>
<?php echo $form->checkBoxList($model, 'categoriasIds', CHtml::listData(Categorias::model()->findAll(), 'id_categorias', 'nombre')); ?>
<?php echo $form->error($model, 'categorias'); ?>
<br><div class="buttons">
<?php echo CHtml::submitButton('Guardar Cambios',array('data-role'=>'button','data-theme'=>'b')); ?>
</div>
<?php $this->endWidget(); ?>
model Usuario.php:
public $categoriasIds = array();
public function relations()
{
return array(
'categorias' => array(self::MANY_MANY, 'Categorias', 'categorias_usuarios(id_usuario,id_categoria)'),
);
}
public function behaviors()
{
return array(
'CAdvancedArBehavior' => array(
'class' => 'application.extensions.CAdvancedArBehavior'
)
);
}
and model Categorias.php:
public function relations()
{
return array(
'categorias' => array(self::MANY_MANY, 'Categorias', 'categorias_usuarios(id_usuario,id_categoria)'),
);
}
public function behaviors()
{
return array(
'CAdvancedArBehavior' => array(
'class' => 'application.extensions.CAdvancedArBehavior'
)
);
}
the controller SiteController.php:
public function loadModel($id)
{
$model=Usuarios::model()->findByPk($id);
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}
public function actionTusCategorias($id)
{
$model=$this->loadModel($id);
if(isset($_POST['TusCategorias']))
{
$model->attributes=$_POST['TusCategorias'];
$model->categorias = $_POST['TusCategorias']['categoriasIds'];
if($model->save())
$this->render('tuscategorias',array(
'model'=>$model,
));
}
$this->render('tuscategorias',array(
'model'=>$model,
));
}