【发布时间】:2018-06-13 04:23:46
【问题描述】:
我已修改用户表以添加一列,该列的名称是 id_periode,我有高级模板,所以我想从后端控制器更新该列值。我创建这样的控制器
public function actionPindahPeriode($id)
{
$model2 = $this->findModel2($id);
if ($model2->load(Yii::$app->request->post()) ) {
$model2->save();
return $this->render('view',
'model2' => $this->findModel2($id),
]);
}
date_default_timezone_set('Asia/Makassar');
$jam_sekarang = date('h:i:s', time());
$tgl_sekarang=date('Y-m-d');
$model_periode = Periode::find()
->andWhere(['>','mulai_daftar_ulang',$tgl_sekarang ])
->asArray()
->all();
return $this->renderAjax('pindah_periode', [
'model_periode' => $model_periode,
'model2' => $this->findModel2($id),
]);
}
findModel2函数是这样的
protected function findModel2($id)
{
if (($model = User::findOne($id)) !== null) {
return $model;
}
throw new NotFoundHttpException('The requested page does not exist.');
}
我将该模型渲染成一个表单
<?php $form = ActiveForm::begin(); ?>
<?php $listData=ArrayHelper::map($model_periode,'id',function($model_periode){
return $model_periode['nama_periode'].' Tahun '.$model_periode['tahun'];});?>
<?= $form->field($model2, 'id_periode')->dropDownList($listData, ['prompt' => '']) ?>
<div class="form-group">
<?= Html::submitButton('Save', ['class' => 'btn btn-danger']) ?>
</div>
<?php ActiveForm::end(); ?>
表单正在运行,但我无法更新表用户中的值 id_periode 列。没有显示错误,有什么建议吗?
【问题讨论】:
-
print_r($model2); $model2->save() 之前;检查您是否在模型中获得“id_periode”属性。或者检查您的 common\config\main-local.php 并设置 'enableSchemaCache' => false。
-
能否请您分享模型«User»源代码,我感觉您缺少一些配置,因为我已经做了很多次。如果需要,请使用 Gist。
-
@Sumit 和@moplin,非常感谢您的回复,我已经解决了我的问题,首先我尝试像下面的 Gru 建议一样打印
Yii::$app->request->post(),结果给了我具有 id_periode 的数组和价值,所以我得出结论,我应该把价值交给模型,所以这就是我所做的,$POST_VARIABLE=Yii::$app->request->post('User'); $model2->id_periode = $POST_VARIABLE['id_periode'];然后保存模型