public function username_existe($attribute, $params) { //Buscar el username en la tabla $table = UsuarioDB::find()->where("username=:username", [":username" => $this->username]); //Si el username existe mostrar el error if ($table->count() == 1) { $this->addError($attribute, "El usuario seleccionado existe"); } }
public function actionSign_in() { $this->layout = 'frontoffice'; //Creamos la instancia con el model de validación $model = new SignIn(); //Mostrará un mensaje en la vista cuando el usuario se haya registrado $msg = null; //Validación mediante ajax if ($model->load(Yii::$app->request->post()) && Yii::$app->request->isAjax) { Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($model); } //Validación cuando el formulario es enviado vía post //Esto sucede cuando la validación ajax se ha llevado a cabo correctamente //También previene por si el usuario tiene desactivado javascript y la //validación mediante ajax no puede ser llevada a cabo if ($model->load(Yii::$app->request->post())) { if ($model->validate()) { //Preparamos la consulta para guardar el usuario $table = new UsuarioDB(); $table->username = $model->username; $table->nombre = $model->nombre; $table->apellido = $model->apellido; $table->edad = $model->edad; $table->sexo = $model->sexo; $table->email = $model->email; //Encriptamos el password $table->password = crypt($model->password, Yii::$app->params["salt"]); //Creamos una cookie para autenticar al usuario cuando decida recordar la sesión, esta misma //clave será utilizada para activar el usuario $table->authKey = $this->randKey("abcdef0123456789", 200); //Creamos un token de acceso único para el usuario $table->accessToken = $this->randKey("abcdef0123456789", 200); //Si el registro es guardado correctamente if ($table->insert()) { //Nueva consulta para obtener el id del usuario //Para confirmar al usuario se requiere su id y su authKey $user = $table->find()->where(["email" => $model->email])->one(); $id = urlencode($user->id); $authKey = urlencode($user->authKey); $subject = "Confirmar registro - El Oferton!"; $body = "<h1>Haga click en el siguiente enlace para finalizar tu registro</h1>"; $body .= "<a href='http://obligatoriophp-lordnicus.c9.io/index.php?r=site/confirm&id=" . $id . "&authKey=" . $authKey . "'>Confirmar</a>"; //Enviamos el correo Yii::$app->mailer->compose()->setTo($user->email)->setFrom([Yii::$app->params["adminEmail"] => Yii::$app->params["title"]])->setSubject($subject)->setHtmlBody($body)->send(); $model->username = null; $model->nombre = null; $model->apellido = null; $model->edad = null; $model->sexo = 0; $model->email = null; $model->password = null; $model->password_repeat = null; $msg = "Felicidades, ahora sólo falta que confirmes tu registro en tu cuenta de correo"; } else { $msg = "Ha ocurrido un error al llevar a cabo tu registro"; } } else { $model->getErrors(); } } return $this->render('signIn', ['model' => $model, "msg" => $msg]); //return $this->render("register", ["model" => $model, "msg" => $msg]); }