我的个人资料页面有3种形式:
有什么方法可以控制什么形式发送然后更新所需的属性或我们的模型?所以我可以更改发送表单的电子邮件,或更改发送其他表单的头像(相同型号)。
这是我的实际行动:
public function actionIndex()
{
$model = Yii::$app->user->identity;
$userMeta = PgcUsersMeta::findOne(['fk_user' => $model->id]);
//Si queremos cambiar el email
if ($model->load(Yii::$app->request->post()) && $model->update(true, ["email"])
|| ($userMeta->load(Yii::$app->request->post()) && $userMeta->update())) {
Yii::$app->getSession()->setFlash('profile-Msg-OK', Yii::t("app","Generic_Changes_OK"));
return $this->redirect(['index']);
} else {
return $this->render('index', [
'model' => $model,
'userMeta' => $userMeta,
]);
}
}
答案 0 :(得分:1)
您可以通过查看UploadedFile
实例来检查用户是否上传了头像。这是一个示例(假设您的模型的属性名称是头像)
$model->avatar = UploadedFile::getInstance($model, 'avatar');
if ($model->avatar) {
// do stuff
}
作为另一种选择,考虑将这三种形式分成三种不同的控制器动作,例如: 个人资料/更新头像,个人资料/更新电子邮件,个人资料/更新元。因此,对于上传头像,您的表单操作就像<form action="profile/update-avatar">
等等