Для автора, скорее всего, вопрос уже не актуален, но может кому-нибудь это пригодится.
Столкнулся с такой же проблемой. Решил следующим образом, причём средствами дефолтного валидатора:
1. копируем поле $model->username в $model->oldUsername.
2. в rules пишем следующее:
public function rules() {
return [
//...
['username', 'unique', 'targetClass' => Users::className(), 'message' => 'Имя пользователя уже занято', 'filter' => ['!=', 'username', $this->oldUsername]],
//...
];
}
Собственно, вот страница документации, которая помогла решить проблему:
www.yiiframework.com/doc-2.0/yii-validators-unique...