When trying to access the registration form, it returns an error working from production. In local it does not give me this error.
this is the error:
Error
Hubo un error interno del servidor.
The above error occurred while the Web server was processing your request.
Please contact us if you think this is a server error. Thank you.
SiteController
<?php namespace app\controllers; use Yii; use yii\filters\AccessControl; use yii\web\Controller; use yii\web\Response; use yii\filters\VerbFilter; use app\models\LoginForm; use app\models\FormRegister; use app\models\Users; use app\models\User; use yii\helpers\Html; use yii\helpers\Url; use yii\data\ActiveDataProvider; use app\models\Talentos; use app\models\Filtro; use app\models\FormPreregistro; class SiteController extends Controller { public function actionRegister(){ $model = new FormRegister(); $msg = null; if ($model->load(Yii::$app->request->post())){ if($model->validate()){ $table = new Users; $table->username = $model->username; $table->email = $model->email; $table->tipo = "invitado"; $table->password = crypt($model->password, Yii::$app->params["salt"]); $table->authKey = $this->randKey("abcdef0123456789", 200); $table->accessToken = $this->randKey("abcdef0123456789", 200); if ($table->insert()){ $user = $table->find()->where(["email" => $model->email])->one(); $id = urlencode($user->id); $authKey = urlencode($user->authKey); $subject = "Confirmar registro"; $body = "Haga click en el siguiente enlace para finalizar tu registro
"; $body .= "Confirmar"; 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]); } } My model âFormRegister.phpâ <?php namespace app\models; use Yii; use yii\base\model; use app\models\Users; class FormRegister extends model{ public $username; public $email; public $password; public $password_repeat; public function rules(){ return [ [['username', 'email', 'password', 'password_repeat'], 'required', 'message' => 'Campo requerido'], ['username', 'match', 'pattern' => "/^.{3,50}$/", 'message' => 'MĂnimo 3 y mĂĄximo 50 caracteres'], ['username','email', 'message' => 'Formato no vĂĄlido'], ['username', 'username_existe'], ['email', 'match', 'pattern' => "/^.{5,80}$/", 'message' => 'MĂnimo 5 y mĂĄximo 80 caracteres'], ['email', 'email', 'message' => 'Formato no vĂĄlido'], ['email', 'email_existe'], ['password', 'match', 'pattern' => "/^.{8,16}$/", 'message' => 'MĂnimo 6 y mĂĄximo 16 caracteres'], ['password_repeat', 'compare', 'compareAttribute' => 'password', 'message' => 'Los passwords no coinciden'], ]; } public function email_existe($attribute, $params){ $table = Users::find()->where("email=:email", [":email" => $this->email]); if ($table->count() == 1){ $this->addError($attribute, "El email seleccionado existe"); } } public function username_existe($attribute, $params){ $table = Users::find()->where("username=:username", [":username" => $this->username]); if ($table->count() == 1) { $this->addError($attribute, "El usuario seleccionado existe"); } } } My view âregister.phpâ <?php use yii\helpers\Html; use yii\widgets\ActiveForm; ?><?= $msg ?>
RegĂstrate
<?php $form = ActiveForm::begin([ 'method' => 'post', 'id' => 'formulario', 'enableClientValidation' => true, 'enableAjaxValidation' => false, ]); ?><div class="form-group">
<?= $form->field($model, "email")->input("email") ?>
</div>
<div class="form-group">
<?= $form->field($model, "password")->input("password")->label('Contraseña') ?>
</div>
<div class="form-group">
<?= $form->field($model, "password_repeat")->input("password")->label('Repite Contraseña') ?>
</div>
<?= Html::submitButton("Registrar", ["class" => "btn btn-primary"]) ?>
<?php ActiveForm::end(); ?>