Vista de Usuarios Yii2 (Variante 2)

 1.- Buscar en frontend/models/SignupForm.php el método que trae Yii2 para registrar usuarios y copiarlo en el modelo de user generado.

    public function signup()

    {

        if (!$this->validate()) {

            return null;

        }

        

        $user = new User();

        $user->username = $this->username;

        $user->email = $this->email;

        $user->setPassword($this->password);

        $user->generateAuthKey();

        $user->generateEmailVerificationToken();

        return $user->save() && $this->sendEmail($user);


    }

2.- Adicionar en el modelo el use de Usuario que está en el common

use common\models\User as UserCommon;


3.- Crear el atributo virtual password

public $password; 


4.- Adicionar las validaciones en el modelo para este atributo virtual

   ['password', 'string', 'min' => 12],


5.- Modificar los requeridos y dejar solo el username y el email

  [['username', 'email'], 'required'],


6.- Extender de UserCommon: (Aqui va a variar con respecto a la variante 1)

Sustituir 

class User extends \yii\db\ActiveRecord

Por

class User extends UserCommon


7.- Modificar el método de signup

    public function signup() {


        if (!$this->validate()) {

            return null;

        }

         if($this->id != null){

            if($this->password != null && $this->password != '' ){

                $this->setPassword($this->password);

            }

        }else{

            $this->setPassword($this->password);

        }

        if($this->auth_key == null){

           $this->generateAuthKey();

        }

        if(!$this->save()){

             $this->addErrors($this->getErrors());

             return false;  

        }

     return true;

        

     }


8.- Modificar la vista de usuario dejando solo los campos necesarios (Continúa tal cual la variante 1)


    <?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>


    <?= $form->field($model, 'email') ?>


    <?= $form->field($model, 'password')->passwordInput() ?>


9.- Modificar el UserController 

 public function actionCreate()

    {

        $model = new User();


        if ($model->load(Yii::$app->request->post()) && $model->signup()) {

            return $this->redirect(['index']);

        }


        return $this->render('create', [

            'model' => $model,

        ]);

    }



 public function actionUpdate($id)

    {

        $model = $this->findModel($id);


        if ($model->load(Yii::$app->request->post()) && $model->signup()) {

            return $this->redirect(['index']);

        }


        return $this->render('update', [

            'model' => $model,

        ]);

    }



10.- Modificar en la vista el form sustituyendo use yii\widgets\ActiveForm; por 

use yii\bootstrap4\ActiveForm;


11.- Guardar el usuario 


12.- Modificar el index para dejar las columnas username y email

Pueden ver el proceso completo en mi canal de YouTube: https://youtu.be/sNQiH48iFV8



Comentarios

Entradas populares de este blog

AdminLTE3 integración Yii2

RBAC Yii2 utilizando la extensión "yii2mod/yii2-rbac": "*"

Integración AdminLTE2 Yii2