Правило unique не работает при клиентской валидации, но в
доке об этом забыли упомянуть.
В данном случае, проще всего использовать
ajax валидацию поля login:
1. В представлении включить валидацию для поля
$form->field($model, 'login', ['enableAjaxValidation' => true]);
2. В контроллере create/update отдать ошибки валидации
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
В исходном примере, если ввести корректные имя и пароль и корректный, но не уникальный логин и отправить форму, она вернется с ошибкой валидации не уникального логина. Все работает и срабатывает;)