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
Publicar un comentario