Yii2填充更新表单,其中值存储在数组中

时间:2015-05-08 23:36:23

标签: php activerecord model-view-controller yii2

我创建了一个包含以下字段的表单,并在保存到单个数据库字段之前使用json编码。

现在我需要在使用更新表单时填充字段,但我不确定,因为我找不到任何yii2示例。

<?= $form->field( $model, 'seo_information[field1]' )
          ->textInput( [ 'maxlength' => 255 ] )
          ->label('Array Field 1) ?>

<?= $form->field( $model, 'seo_information[field2]' )
         ->textInput( [ 'maxlength' => 255 ] )
         ->label('Array Field 2') ?>

<?= $form->field( $model, 'seo_information[field3]' )
         ->textInput( [ 'maxlength' => 255 ] )
         ->label('Array Field 3') ?>

控制器创建代码

public function actionCreate()
{
    $model = new Article();
    $model->user_id = Yii::$app->user->id;

    if ($model->load(Yii::$app->request->post())) 
    {
        $seo_information = $_POST['Article']['seo_information'];
        $model->seo_information = json_encode($seo_information); 
        $model->save();
        return $this->redirect(['view', 'id' => $model->id]);
    } 
    else 
    {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

1 个答案:

答案 0 :(得分:2)

这应该这样做:

else 
{
     $model->seo_information = json_decode($model->seo_information, true); 
     return $this->render('create', [
         'model' => $model,
     ]); 
}

如果db中的值为NULL,则也可以。