SAD*_*ADi 6 yii2 yii2-validation
由于更新操作上的唯一验证器获取错误('此用户名已被占用')我想在新用户名值不等于prev值时验证更新操作上的用户名,这是我的规则:
[['username'], 'unique', 'on'=>'update', 'when' => function($model){
return static::getOldUsername($model->id) !== $model->username;
}
],
Run Code Online (Sandbox Code Playgroud)
并且我的功能是获得上一个用户名值:
public static function getOldUsername($id)
{
return static::findIdentity($id)->username;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我认为$ model-> getId()没有返回任何因为静态id(例如:23)它的工作.
[['username'], 'unique', 'on'=>'update', 'when' => function($model){
return static::getOldUsername(23) !== $model->username;
}
],
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得模特ID?或者,如果您有其他方法可以在更新操作上跳过yii2唯一验证,如果新值等于prev值,请解释一下.
提前致谢
小智 5
我想你可以用 $user->isAttributeChanged('username');
示例(我不测试此代码):
[['username'], 'unique', 'on'=>'update', 'when' => function($model){
return $model->isAttributeChanged('username')
}],
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3096 次 |
| 最近记录: |