所以我在页面上显示已记录用户的信息,然后是一个可用于更改基本用户信息的表单,例如电子邮件地址,用户名等。
在ProfileController文件中,我有索引操作,它处理用户信息,理论上也是表格:
public function actionIndex() {
$user = User::find()->where(['id' => Yii::$app->user->identity->id])->one();
if ($user->load(Yii::$app->request->post())) {
$user->save();
//var_dump($user->first_name);die;
}
return $this->render('index', [
'user' => $user,
]);
}
在索引视图文件中,我正在显示以下表单:
<div class="row form">
<div class="user-form col-md-8 col-md-offset-2">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($user, 'last_name')->textInput(['maxLength' => true]) ?>
<?= $form->field($user, 'first_name')->textInput(['maxLength' => true]) ?>
<?= $form->field($user, 'email')->textInput(['maxLength' => true]) ?>
<?= $form->field($user, 'image')->textInput([]) ?>
<div class="form-group">
<?= Html::submitButton('Submit', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
问题是,每当我按下表单下方的提交按钮时,控制器都会收到发布请求,但不会更新表单字段中给出的新值,从而在var_dump()中显示旧信息。我该怎么办?
答案 0 :(得分:0)
可能验证失败。这样做的正确方法是:
// ...
if ($user->load(Yii::$app->request->post())) {
if ($user->save()) {
// validated and saved, check $user state now
}
}
方法save()
自动调用方法validate()
。如果您只想在经过验证的情况下操作此模型,您也可以自己调用它。