Hey folks, I got this problem.
It always create the profesor object when I do if ($model->role === ‘1’)
It jumps directly to the else statement
SiteController.php
public function actionRegister()
{
//Creamos la instancia con el model de validación
$model = new FormRegister;
//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 Users;
$table->role = $model->role;
$table->username = $model->username;
//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);
$table->email = $model->email;
if($model->role === 1){
$apoderado = new Apoderado;
$apoderado->nombre = $model->nombre;
$apoderado->rut = $model->rut;
$apoderado->fono = $model->fono;
$apoderado->direccion = $model->direccion;
$apoderado->email = $model->email;
$apoderado->id_alumno = $model->id_alumno;
$apoderado->apoderado_sup = $model->apoderado_sup;
$apoderado->fono_apoderado_sup = $model->fono_apoderado_sup;
$apoderado->email_apoderado_sup = $model->email_apoderado_sup;
$apoderado->save();
} else {
$profesor = new Profesor;
$profesor->nombre = $model->nombre;
$profesor->rut = $model->rut;
$profesor->fono = $model->fono;
$profesor->direccion = $model->direccion;
$profesor->email = $model->email;
$profesor->save();
}
$table->id_apoderado = $model->id_apoderado;
$table->id_profesor = $model->id_profesor;
//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";
$body = "<h1>Haga click en el siguiente enlace para finalizar tu registro</h1>";
$body .= "<a href='http://localhost:8080/sie2gii/web/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->email = null;
$model->password = null;
$model->password_repeat = null;
$msg = "Enhorabuena, 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("register", ["model" => $model, "msg" => $msg,]);
Here’s the dropdownlist in the view
register.php
<div class="form-group">
<?= $form->field($model, 'role[]')->dropDownList(
['1' => 'Apoderado', '2' => 'Profesor'],
['prompt' => 'Seleccione tipo de usuario']); ?>
</div>