t-alexashka
@t-alexashka
Сразу пишу legacy код

Валидация email на уникальность по таблице не работает?

Товарищи друзья, приветы, это снова я.

Сделал в форме правило на проверку уникальности:

['email', 'unique', 'targetClass' => User::className(), 'message' => 'Эта почта уже зарегистрирована'],


но при вводе существующей почты форма не ругается. Она как это проверят? не ajax-ом? А если не ажаксом то после отправки все равно ничего не говорит (хотя как и надо - запись в базу не добавляет), либо куда-то говорит но я не вижу. Как это на фронт вывести, или еще лучше - как это сразу ajaxoм проверять при change? (ну как сейчас проверяется пустое поле или нет).

UPD:
на фронте вывожу так
<?= $form->field($formRegister, 'email')->textInput() ?>
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Радость моя, скорей всего проблема у Вас тут:
if (!$this->validate()) {
            return null;
        }

Если не проходит валидация Вы возвращаете null, поэтому не видите сообщений.
Сделайте вот так:
public function signup()
    {
        if($this->validate()){
            $user = new Users();
            $user->email = $this->email;
            $user->setPassword($this->password);
            $user->generateAuthKey();

            if($user->save()){
               // после успешного сохранения в базу отправляете письмо или ещё что-то делаете
            }
            return $user;
        }
        return null;
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы