перед сохранением в 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
Author: Rajinder, 2015-06-18

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