2015-06-18 10 views
7

Ho un modulo con campi di selezione multipla denominati modulo "città" in Yii2. Quando mi presento forma i dati post mi mostrano la seguente:prima del salvataggio in Yii2

$_POST['city'] = array('0'=>'City A','1'=>'City B','2'=>'City C') 

Ma voglio salvare la matrice in forma serialize come:

a:3:{i:0;s:6:"City A";i:1;s:6:"City B";i:2;s:6:"City C";} 

Ma non so come modificare i dati prima salva la funzione in Yii2. Seguito è il mio codice:

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 
     ]); 
    } 

Please help me.

Grazie a tutti per il vostro impegno. Ho risolto il problema. ecco il codice:

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; 
     } 
    } 

Basta inserire questo codice nel modello e la sua lavorazione

+0

In che modo è esattamente utile il commento @AkshayHegde? Avete già una sorta di configurazione di 'ActiveRecord' /' Model'? Se è così puoi aggiungere il codice? Dove stai cercando di salvare? – Blizz

+0

Ho usato la funzione serializzazione ma i dati non vengono salvati in formato serializzato – Rajinder

+0

Salva dove? Banca dati? Sessione? un file? per favore sii più specifico nella tua domanda, non possiamo vedere il tuo schermo e non sappiamo cosa stai pensando. – Blizz

risposta

2

È perché Yii::$app->request->post() è diversa da quella $_POST in questa fase. Provare a cambiare il codice per:

$post = Yii::$app->request->post(); 
$post['Adpackage']['Page'] = serialize($post['Adpackage']['Page']); 
$post['Adpackage']['fixer_type'] = serialize($post['Adpackage']['fixer_type']); 
$model->load($post); 

Aggiornamento:

Inoltre sarebbe meglio farlo su ActiveRecord beforeSave() metodo.

+1

Inoltre sarebbe meglio farlo sul metodo ActiveRecord beforeSave(). –

+0

grazie per la tua risposta. Ho risolto il problema con il metodo beforeSave(). – Rajinder

Problemi correlati