【发布时间】:2023-04-05 09:42:01
【问题描述】:
在用户模型中我有以下规则
[['username', 'email'], 'unique'],
我想要做的是,在新用户创建期间、更新时(当用户输入另一个用户名或电子邮件以检查它是否唯一时)使此规则可用。但是如果我不更改当前用户模型中的用户名(在更新操作中),即使用户没有编辑当前用户名和电子邮件并且只保存填写的表单(使用当前值),也会出现错误“用户名不是唯一的”。
例如,您的用户名是:user1。您打开了更新操作并仅更改了密码。在这种情况下,我的配置给 user1 is not unique message。另一种情况是,您将用户名更改为:user2 并且它可以正常工作
这是动作代码:
public function actionMe()
{
$data["model"] = $model = $this->findModel(Yii::$app->user->id);
if ($model->load(Yii::$app->request->post())) {
if (trim($model->password) != "")
$model->setPassword($model->password);
if ($model->validate() && $model->save())
return $this->redirect(['site/index']);
}
return $this->render('me', $data);
}
如何防止这种行为?
【问题讨论】:
-
我试过你的情况,但没有得到相同的结果。另外我的 yii2 版本是
2.0.11.2。你用的是哪个版本的 yii2? -
我觉得不是版本的问题,我们的版本是一样的
-
这毫无意义。你能列出你模特的规则吗?
-
那些规则就像字符串一样简单,没有任何场景
标签: validation yii2 unique