Всем привет товарищи.
Когда в модальном окне в форме я вожу почту и пароль, (то при воде почты уже данные появляются в таблицы) и жмакаю зарегистрироваться мне пишет что мыло уже занято
controller
public function actionSignUp()
{
$emailActivation = Yii::$app->params['emailActivation'];
$model = $emailActivation ? new Signup(['scenario' => 'emailActivation']) : new Signup();
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post()) && $model->validate()) {
if ($user = $model->signup()) {
if ($user->status === User::STATUS_ACTIVE) {
if (Yii::$app->getUser()->login($user)) {
return $this->goHome();
}
} else {
if ($model->sendActivationEmail($user)) {
Yii::$app->session->setFlash('success', 'Письмо с активацией отправлено на емайл <strong>' . Html::encode($user->email) . '</strong> (проверьте папку спам).');
} else {
Yii::$app->session->setFlash('error', 'Ошибка. Письмо не отправлено.');
Yii::error('Ошибка отправки письма.');
}
}
} else {
Yii::$app->session->setFlash('error', 'Возникла ошибка при регистрации.');
Yii::error('Ошибка при регистрации');
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
// Yii::$app->session->setFlash('error', 'Возникла ошибка при регистрации.');
// Yii::error('Ошибка при регистрации');
// return $this->refresh();
}
}
return $this->renderAjax('sign-up', ['model' => $model]);
}
model
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class Signup extends Model
{
public $name;
public $surname;
public $email;
public $password;
public $status;
/**
* @return array
*/
public function rules()
{
return [
[['email', 'password'], 'filter', 'filter' => 'trim'],
[['email', 'password'], 'required'],
['password', 'string', 'min' => 6, 'max' => 255],
['email', 'email'],
['email', 'unique', 'targetClass' => 'app\models\User', 'message' => 'Эта почта уже занята'],
['status', 'default', 'value' => User::STATUS_ACTIVE, 'on' => 'default'],
['status', 'in', 'range' => [User::STATUS_NOT_ACTIVE, User::STATUS_ACTIVE]],
['status', 'default', 'value' => User::STATUS_NOT_ACTIVE, 'on' => 'emailActivation'],
];
}
/**
* @return array
*/
public function attributeLabels()
{
return [
'email' => 'Почта',
'password' => 'Пароль',
];
}
/**
* Регистрация юзера
*
* @return User|null
*/
public function signUp()
{
$user = new User();
$user->name = $this->name;
$user->surname = $this->surname;
$user->role = User::ROLE_USER;
$user->email = $this->email;
$user->status = $this->status;
$user->setPassword($this->password);
$user->generateAuthKey();
if ($this->scenario == 'emailActivation')
$user->generateSecretKey();
return $user->save() ? $user : null;
}
/**
* Отправка активационного письма
*
* @param $user
* @return bool
*/
public function sendActivationEmail($user)
{
return Yii::$app->mailer->compose('activationEmail', ['user' => $user])
->setFrom([Yii::$app->params['supportEmail'] => 'Привет'])
->setTo($this->email)
->setSubject('Активация аккаунта')
->send();
}
}
view
<?php
use yii\widgets\ActiveForm;
use yii\bootstrap\Html;
/**
* @var $this yii\web\View
* @var $form yii\widgets\ActiveForm
*/
?>
<?php $form = ActiveForm::begin([
'id' => 'reg-form',
'enableAjaxValidation' => true,
]); ?>
<?= $form->field($model, 'email')->textInput() ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<?= Html::submitButton('Зарегистрироваться') ?>
<?php ActiveForm::end(); ?>