Comment ajouter manuellement des fonctions utilisateur dans le backend YII2.0 ? Quelle classe est utilisée pour l'implémenter ?

不言
Libérer: 2023-04-03 10:16:01
original
1352 Les gens l'ont consulté

Cet article vous explique comment ajouter manuellement des fonctions utilisateur dans le backend YII2.0 ? Quelle classe est utilisée pour l’implémenter ? , le contenu est très bon, les amis dans le besoin peuvent s'y référer, j'espère que cela pourra aider tout le monde.

Utilisez la classe SignupForm pour ajouter des utilisateurs administrateurs en arrière-plan

Étape 1. Copiez une copie de frontend/models/SignupForm.php dans le dossier du modèle d'arrière-plan backend/models/SignupForm.php

Étape 2. Il est clair que les fichiers qui doivent être modifiés sont : la nouvelle classe SignupForm, la méthode actionCreate dans la classe AdminuserController, le fichier de vue de création

Étape 3.

Modifiez l'espace de noms de la classe SignupForm en backend/models

Modifiez le fichier de vue pour ajouter des utilisateurs en arrière-plan

Modifiez les règles et les champs d'exigences dans la classe SignupForm

Modifiez la méthode signup(), créez un compte backend et ajoutez la classe SignupForm. Les attributs sont transmis aux membres de la classe Adminuser et enregistrés dans la table de données Adminuser. Le code d'implémentation est le suivant

Classe SignupForm.

<?php
namespace backend\models;use yii\base\Model;
use common\models\Adminuser;use yii\helpers\VarDumper;
/**
 * Signup form 
 */
 class SignupForm extends Model
{    public $username;    
public $email;    
public $password;    
public $password_repeat;    
public $nickname;    public $phone;    
  /**
   * {@inheritdoc}     
  */
    public function rules()
    {        return [
            [&#39;username&#39;, &#39;trim&#39;],
            [&#39;username&#39;, &#39;required&#39;],
            [&#39;username&#39;, &#39;unique&#39;, &#39;targetClass&#39; => &#39;\common\models\Adminuser&#39;, &#39;message&#39; => &#39;用户名已存在!&#39;],
            [&#39;username&#39;, &#39;string&#39;, &#39;min&#39; => 2, &#39;max&#39; => 255],

            [&#39;email&#39;, &#39;trim&#39;],
            [&#39;email&#39;, &#39;required&#39;],
            [&#39;email&#39;, &#39;email&#39;],
            [&#39;email&#39;, &#39;string&#39;, &#39;max&#39; => 255],
            [&#39;email&#39;, &#39;unique&#39;, &#39;targetClass&#39; => &#39;\common\models\Adminuser&#39;, &#39;message&#39; => &#39;邮箱已存在!&#39;],

            [&#39;password&#39;, &#39;required&#39;],
            [&#39;password&#39;, &#39;string&#39;, &#39;min&#39; => 6],
            [&#39;password_repeat&#39;, &#39;required&#39;],
            [&#39;password_repeat&#39;, &#39;compare&#39;,&#39;compareAttribute&#39;=>&#39;password&#39;,&#39;message&#39;=>&#39;两次输入的密码不一致&#39;],

            [&#39;nickname&#39;, &#39;required&#39;],
            [&#39;email&#39;, &#39;string&#39;, &#39;max&#39; => 128],

            [&#39;phone&#39;, &#39;required&#39;],
            [[&#39;phone&#39;], &#39;unique&#39;,&#39;targetClass&#39; => &#39;\common\models\Adminuser&#39;,&#39;message&#39;=>&#39;{attribute}已经被占用了&#39;],
            [&#39;phone&#39;,&#39;match&#39;,&#39;pattern&#39;=>&#39;/^1[0-9]{10}$/&#39;,&#39;message&#39;=>&#39;{attribute}必须为1开头的11位纯数字&#39;],
        ];
    }    public function attributeLabels()
    {        return [            &#39;id&#39; => &#39;ID&#39;,
            &#39;username&#39; => &#39;用户名&#39;,
            &#39;password&#39; => &#39;密码&#39;,
            &#39;password_repeat&#39; => &#39;再次输入密码&#39;,
            &#39;email&#39; => &#39;邮箱&#39;,
            &#39;nickname&#39; => &#39;昵称&#39;, 
            &#39;phone&#39; => &#39;手机号&#39;, 
        ];
    }    
    /**
     * Signs user up.
     *
     * @return User|null the saved model or null if saving fails     
     */
    public function signup()
    {        if (!$this->validate()) {            
    return null;
        }        
        $user = new Adminuser();        
        $user->username = $this->username;        
        $user->nickname = $this->nickname;        
        $user->phone = $this->phone;        
        $user->email = $this->email;        
        $user->setPassword($this->password);        
        $user->generateAuthKey();        
        $user->created_at = time();        
        $user->updated_at = time();        
        /*
        //保存调试
        $user->save();
        VarDumper::dump($user->errors);
        exit(0);        */
        return $user->save() ? $user : null;
    }
}
Copier après la connexion

créer un fichier de vue

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model common\models\Adminuser */
$this->title = &#39;Create Adminuser&#39;;
$this->params[&#39;breadcrumbs&#39;][] = [&#39;label&#39; => &#39;Adminusers&#39;, &#39;url&#39; => [&#39;index&#39;]];
$this->params[&#39;breadcrumbs&#39;][] = $this->title;
?>
<p class="adminuser-create">

    <h1><?= Html::encode($this->title) ?></h1>

   <?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, &#39;username&#39;)->textInput([&#39;maxlength&#39; => true]) ?>

    <?= $form->field($model, &#39;password&#39;)->passwordInput([&#39;maxlength&#39; => true]) ?>
    <?= $form->field($model, &#39;password_repeat&#39;)->passwordInput([&#39;maxlength&#39; => true]) ?>
    <?= $form->field($model, &#39;email&#39;)->textInput([&#39;maxlength&#39; => true]) ?>

    <?= $form->field($model, &#39;nickname&#39;)->textInput([&#39;maxlength&#39; => true]) ?> 
    <?= $form->field($model, &#39;phone&#39;)->textInput([&#39;maxlength&#39; => true]) ?> 
    <p class="form-group">
        <?= Html::submitButton(&#39;Save&#39;, [&#39;class&#39; => &#39;btn btn-success&#39;]) ?>
    </p>

    <?php ActiveForm::end(); ?>


</p>
Copier après la connexion

Classe AdminuserController Modification de la méthode actionCtreate dans

<?php   
public function actionCreate()
    {        $model = new SignupForm();        
    if ($model->load(Yii::$app->request->post())) {            
    if($user = $model->signup()){                
    return $this->redirect([&#39;view&#39;, &#39;id&#39; => $model->id]); 
            }
            
        }        return $this->render(&#39;create&#39;, [            
        &#39;model&#39; => $model,
        ]);
    }
Copier après la connexion

Recommandations associées :

YII2 implémente une programmation orientée aspect

Comment l'implémenter à l'aide de la certification API Laravel Passport

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal