А зачем вам вот это все: ?
if(isset($post['User']['password'])){
$user->setPassword(Yii::$app->request->post('password'));
unset($post['User']['password']);
unset($post['User']['password_repeat']);
}
По идее оно лищнее, у вас описано правило валидации, и оно сработает в if. Если все нормально попадете внутрь if
И еще попрбуйте заменить правило валидации на такое:
['password', 'compare']
тк судя по описанию
https://github.com/yiisoft/yii2/blob/master/docs/g...// validates if the value of "password" attribute equals to that of "password_repeat"
['password', 'compare'],
этого должно быть достаточно