перед сохранением в Yii2
У меня есть форма с несколькими полями выбора, называемая формой "город" в Yii2. Когда я отправляю форму , данные по почте показывают мне следующее:
$_POST['city'] = array('0'=>'City A','1'=>'City B','2'=>'City C')
Но я хочу сохранить массив в сериализованной форме, например:
a:3:{i:0;s:6:"City A";i:1;s:6:"City B";i:2;s:6:"City C";}
Но я не знаю, как изменить данные перед функцией сохранения в Yii2. Ниже приведен мой код:
if(Yii::$app->request->post()){
$_POST['Adpackage']['Page'] = serialize($_POST['Adpackage']['Page']);
$_POST['Adpackage']['fixer_type'] = serialize($_POST['Adpackage']['fixer_type']);
}
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model
]);
}
Пожалуйста, помогите мне.
Спасибо всем за ваши усилия. Я решил эту проблему. вот код:
public function beforeSave($insert)
{
if (parent::beforeSave($insert)) {
$this->Page = serialize($_POST['Adpackage']['Page']);
$this->fixer_type = serialize($_POST['Adpackage']['fixer_type']);
return true;
} else {
return false;
}
}
Просто поместите этот код в модель и его работу
7
1 answers
Это потому, что Yii::$app->request->post()
отличается от $_POST
на данном этапе. Попробуйте изменить свой код на:
$post = Yii::$app->request->post();
$post['Adpackage']['Page'] = serialize($post['Adpackage']['Page']);
$post['Adpackage']['fixer_type'] = serialize($post['Adpackage']['fixer_type']);
$model->load($post);
Обновление:
Также было бы лучше сделать это с помощью метода ActiveRecord beforeSave()
.
2
Author: Patryk Radziszewski, 2015-07-14 03:05:51