我已修改用户表添加一列,列的名称为 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 列。没有错误显示,有任何建议吗?
答案 0 :(得分:3)
id_periode
在public function rules(){}
函数中定义了规则,这样$model2->load(Yii::$app->request->post())
将从提交的数据中分配此值。 $model->save()
都会返回bool值。你可以利用它来检查是否有任何验证错误。我:
if($model2->save()) {
return $this->render('view',
'model2' => $this->findModel2($id),
]);
} else {
return $this->renderAjax('pindah_periode', [
'model_periode' => $model_periode,
'model2' => $this->findModel2($id),
]);
}
答案 1 :(得分:2)
选项1:检查用户模型验证规则中的列字段。您需要将不需要的列字段从必需属性转移到安全属性。
选项2:尝试$model2->save(false);
。 false
将覆盖您的模型规则。