public function rules() { return [['username', 'filter', 'filter' => 'trim'], ['username', 'required'], ['username', 'string', 'min' => 3, 'max' => 20], ['username', 'match', 'pattern' => '/^[A-Za-z0-9_]+$/u', 'message' => "Логин должен состоять только из латинских букв и цифр без пробелов"], ['password', 'required'], ['password', function () { $this->user = User::findByUsername($this->username); if (is_null($this->user) or !$this->user->validatePassword($this->password)) { $this->addError('password', 'Неверный логин или пароль'); } }]]; }
public function actionSignup() { $signupForm = new SignupForm(); if (Yii::$app->request->isAjax && $signupForm->load(Yii::$app->request->post())) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($signupForm); } else { if ($signupForm->load(Yii::$app->getRequest()->post()) && $signupForm->signup()) { $user = User::findByUsername($signupForm->username); Yii::$app->user->login($user); return $this->goBack(); } } return $this->renderAjax('signup', ['model' => $signupForm]); }