2017-06-22 5 views
0

Ich möchte basierte Daten zeigen, auf der Gruppen-ID des Benutzers, die iDer Versuch, auf Yii2 Eigenschaft von nicht-Objekt zu erhalten

ist verwenden
Yii::$app->user->identity->group_id 

in meinem ModelSearch wie folgt aus:

$query->andFilterWhere([ 
     ...... 
     'group_id' => Yii::$app->user->identity->group_id, 
     'created_date' => $this->dreated_date, 
    ]); 

Es funktioniert wenn ich Sitzung in der Anwendung, aber wenn ich habe Sitzung die Seite nicht anzeigen Fehler:

Trying to get property of non-object 

Für 'group_id' => Yii::$app->user->identity->group_id,

Wie man die Seite zur Login-Seite umleiten kann, wenn ich diese Seite öffne, wenn ich keine Sitzung habe. Danke.

EDIT

Ich habe

if (Yii::$app->user->isGuest) { 
      return $this->redirect(Yii::$app->user->loginUrl); 
} 

in jeder Aktion in meinem contoller die ModelSearch zugreifen.

+0

Mögliche Duplikat [Was ist beste Weg, um Umleitung auf Login-Seite in yii2] (https://stackoverflow.com/questions/33296156/what-is-best-way-to-redirect-on-login-page-in-yii2) – Nue

Antwort

0

Sie können einen Zugriffskontrollfilter für diese Aktion hinzufügen.

Fügen Sie in der Steuerung:

public function behaviors() 
{ 
    return [ 
     'access' => [ 
      'class' => \yii\filters\AccessControl::className(), 
      'only' => ['ID of your action here'], 
      'rules' => [ 
       // allow authenticated users 
       [ 
        'allow' => true, 
        'roles' => ['@'], 
       ], 
      ], 
     ], 
    ]; 
} 

Oder Sie können die Umleitung direkt in die Aktion hinzufügen - zum Beispiel am Anfang stellen:

if (Yii::$app->user->isGuest) { 
    return $this->redirect(Yii::$app->user->loginUrl); 
} 
+1

Ich versuche schon beide. Aber es funktioniert nicht und wird immer noch Fehler erhalten. Versuch, die Eigenschaft von Nicht-Objekt zu bekommen. – adn

+0

Sie haben also etwas falsch gemacht, denn wenn Sie diesen Fehler richtig erkannt haben, bedeutet dies, dass ModelSearch vom Gastbenutzer aufgerufen wird. – Bizley

+0

Es ist schon Arbeit, ich muss Redirect direkt in jede Aktion in Controller hinzufügen. Vielen Dank. – adn

Verwandte Themen