Я пытаюсь создать «apoderado» или «profesor» в соответствующих таблицах, пока я создаю пользователя в таблице «users» в зависимости от выпадающего выбранного значения.
Если это «аподерадо», создайте пользователя и аподерадо, в противном случае создайте пользователя и профессора. Но мой код ничего не делает, кроме создания пользователя.
Я пытался с массивами и методом in_array безуспешно, как я сказал на форуме Yii
https://forum.yiiframework.com/t/dropdown-value-with-array-data-wont-work-in-if-condition-user-role/124633
SiteController.php
public function actionRegister()
{
$model = new FormRegister;
$msg = null;
if ($model->load(Yii::$app->request->post()) && Yii::$app->request->isAjax)
{
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
if ($model->load(Yii::$app->request->post()))
{
if($model->validate())
{
$table = new Users;
$table->role = $model->role;
$table->username = $model->username;
$table->password = crypt($model->password, Yii::$app->params["salt"]);
$table->authKey = $this->randKey("abcdef0123456789", 200);
$table->accessToken = $this->randKey("abcdef0123456789", 200);
$table->email = $model->email;
// var_dump($model->role); die;
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();
}
// else {
// // check what's happening
// var_dump($model->role); die;
// }
$table->id_apoderado = $model->id_apoderado;
$table->id_profesor = $model->id_profesor;
//Si el registro es guardado correctamente
if ($table->insert())
{
$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>";
Yii::$app->mailer->compose()
->setTo($user->email)
->setFrom([Yii::$app->params["adminEmail"] => Yii::$app->params["title"]])
->setSubject($subject)
->setHtmlBody($body)
->send();
$model->nombre = null;
$model->rut = null;
$model->fono = null;
$model->direccion = null;
$model->email = null;
$model->username = 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,]);
Register.php (просмотр)
<div class="form-group">
<?= $form->field($model, 'role')->dropDownList(
['1' => 'Apoderado', '2' => 'Profesor'],
['prompt' => 'Seleccione tipo de usuario']); ?>
</div>
Мне нужно сделать это:
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();
}