2016-06-12 7 views
0

Ich habe ein Tutorial Schritt für Schritt aus Tutorial From Youtobe versucht.Yii2, Nach Login Aber nicht zu Logout wechseln. und wie bekomme ich ID aus der Datenbank nach dem Login

Und Login war Erfolg. aber die Login-Label immer noch mit Label Login, nicht in Logout und einen Benutzernamen ändern.

Und ich habe nicht verstehen, wie

1. Yii::t('app','Nama Admin') in Admin class which implement IdentityInterface ? 

2. Where is Yii::$app->user->isGuest in main.php ? or how to read this ? 

unten zu lesen ist der Code.

Admin ist Benutzerklasse, die IdentityInterface implementiert.

public static function tableName() 
    { 
     return 'admin'; 
    } 

    /** 
    * @inheritdoc 
    */ 
    public function rules() 
    { 
     return [ 
      [['namaAdmin', 'username', 'password', 'authKey'], 'required'], 
      [['namaAdmin', 'password'], 'string', 'max' => 20], 
      [['username'], 'string', 'max' => 25], 
      [['authKey'], 'string', 'max' => 50], 
     ]; 
    } 

public function attributeLabels() 
    { 
     return [ 
      'id' => Yii::t('app', 'ID'), 
      'namaAdmin' => Yii::t('app','Nama Admin'), 
      'username' => Yii::t('app','Username'), 
      'password' => Yii::t('app','Password'), 
      'authKey' => Yii::t('app','Auth Key'), 
     ]; 
    } 

und einige Verfahren ist das gleiche mit dem Video

einige Funktion auf Modell> login.php

public function login() 
    { 
     if ($this->validate()) { 
      return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600*24*30 : 0); 
     } 
     return false; 
    } 

    /** 
    * Finds user by [[username]] 
    * 
    * @return User|null 
    */ 
    public function getUser() 
    { 
     if ($this->_user === false) { 
      $this->_user = Admin::findByUsername($this->username); 
     } 

     return $this->_user; 
    } 

Anmeldung & Logout Aktion auf SiteControler

public function actionLogin() 
    { 
     if (!Yii::$app->user->isGuest) { 
      return $this->goHome(); 
     } 

     $model = new LoginForm(); 
     if ($model->load(Yii::$app->request->post()) && $model->login()) { 
      return $this->goBack(); 
     } 
     return $this->render('login', [ 
      'model' => $model, 
     ]); 
    } 


    public function actionLogout() 
    { 
     Yii::$app->user->logout(); 

     return $this->goHome(); 
    } 

Label Login/Logout auf main.php

Yii::$app->user->isGuest ? (
       ['label' => 'Login', 'url' => ['/site/login']] 
      ) : (
       '<li>' 
       . Html::beginForm(['/site/logout'], 'post', ['class' => 'navbar-form']) 
       . Html::submitButton(
        'Logout (' . Yii::$app->user->identity->username . ')', 
        ['class' => 'btn btn-link'] 
       ) 
       . Html::endForm() 
       . '</li>' 
      ) 
+0

Zeigen Sie Ihre 'var_dump (Yii :: $ app -> user-> isGuest); 'nach dem Login bitte. – Vitaly

+1

Wenn guest .. yii :: $ app-> Benutzer-> ID wird false/0 zurückgeben, andernfalls; ID des Benutzers;) – Gogol

+1

Huh plus du musst dir im Hauptverzeichnis/main-local informieren, welche Klasse du verwendest .. in der Komponente, hab benutzerdefiniert .. – Gogol

Antwort

2

In config/web.php Änderung der user Array auf die folgenden:

'user' => [ 
    'identityClass' => 'app\models\Admin', 
    'enableAutoLogin' => true, 
]