как в yii сделать сохранение multiselect select в модели?




396
как в yii сделать сохранение multiselect select в модели?
Рейтинг 8 из 10. Голосов: 1
Ваша оценка:

как в yii сделать сохранение multiselect select в модели?

в моделе добавьте
public function afterFind()
{

if ($this->data_multiselect=='') $this->data_multiselect=array();
else $this->data_multiselect= unserialize($this->data_multiselect);
return parent::afterFind();
}


public function beforeSave()
{
$this->data_multiselect_sub= serialize($this->data_multiselect);
return parent::beforeSave();
}





в контроллере

if (isset($_POST['LUser']['data_multiselect']))
$model_user->data_multiselect= $_POST['LUser']['data_multiselect'];
else ($model_user->data_multiselect = array());




в viewer
$types[id]=array(1=>'первый', 2=>'второй', 3=>'третий');

echo $form->listBox($model, 'data_multiselec', $types, array('multiple' => 'multiple' ));



и конечно пропишите поле в базе данных как строку
в rules модели
public function rules() {
return array(
array('названия полей, названия полей,data_multiselec', 'safe', 'on' => 'search', ),
array('названия полей, data_multiselec', 'default', 'value' => 0),
array('avatar', 'file', 'allowEmpty'=>true, 'types'=>'jpg, gif, png'),
);
}


в public function search() модели


...
$criteria->compare('data_multiselec', $this->data_multiselec);
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
));



и конечноже свойство в моделе

public $data_multiselec;

Вопросы и ответы