Vista de Usuarios Yii2 (Parte 1)

Quiero mostrarles como modificar la vista de usuarios que creamos en un artículo anterior para que nos permita crear usuarios reutilizando los métodos que ya nos trae el proyecto avanzado de Yii2.
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 que creamos de User el use del modelo que está en el common
use common\models\User as UserCommon; 

3.- Crear el atributo virtual password en nuestro modelo:
public $password; 

4.- Adicionar las validaciones en el rule del modelo para este atributo virtual
  ['password', 'required'],
  ['password', 'string', 'min' => 12],

5.- Modificar los requeridos y dejar solo el username y el email
  [['username', 'email'], 'required'],

6.- Modificar el método de registro para que cree y modifique

public function signup() {

        if (!$this->validate()) {
            return null;
        }

        if($this->id != null){
            $user = UserCommon::find()->where(['id'=>$this->id])->one();
            if($this->password != null && $this->password != '' ){
            $user->setPassword($this->password);
            }
        }else{
            $user = new UserCommon();
            $user->setPassword($this->password);
        }
        
        $user->username = $this->username;
        $user->email = $this->email;
        $user->status = $this->status;
       
        if($this->auth_key == null){
           $user->generateAuthKey();
        }
        if(!$user->save()){
             $this->addErrors($user->getErrors());
             return false;  
        }

       return true;
        
        
    }

7.- Modificar la vista de usuario dejando solo los campos necesarios

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

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

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

8.- 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,
        ]);
    }


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

10.- Guardar el usuario 

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

Con esto ya tendríamos la primera parte de nuestra vista de usuario.

Pueden verificar el proceso completo en mi cnal de YouTube: https://youtu.be/lyr3D3a8RZo

Comentarios

Entradas populares de este blog

AdminLTE3 integración Yii2

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

Integración AdminLTE2 Yii2