2015-10-09 3 views
5

In Konsolenanwendung, wenn ich Yii::$app->user->isGuest verwendet wird, die unter Ausnahme geben:Yii2 isGuest gibt Ausnahme in Konsolenanwendung

Exception 'yii\base\UnknownPropertyException' with message 'Getting unknown prop 
erty: yii\console\Application::user' 

Ich habe sogar versucht, den Benutzer in Komponenten-Array in der Konfigurationsdatei hinzufügen. Aber es hat nicht funktioniert. Irgendeine Idee was mache ich falsch?

+1

Bitte poste deine Konfigurationsdatei –

Antwort

3

In der Konsolenanwendung Yii->$app->user existiert nicht. Also müssen Sie user Komponente in config\console.php konfigurieren.

wie as,

config \ console.php

'components' => [ 
......... 
...... 
     'user' => [ 
      'class' => 'yii\web\User', 
      'identityClass' => 'app\models\User', 
      //'enableAutoLogin' => true, 
     ], 
     'session' => [ // for use session in console application 
      'class' => 'yii\web\Session' 
     ], 
....... 
] 

Um zu überprüfen, es funktioniert oder nicht unter Code.

public function actionIndex($message = 'hello world') 
{ 
    echo $message . "\n"; 
    $session = \Yii::$app->session->set('name', 'ASG'); 

    if(\Yii::$app->session) // to check session works or not 
     echo \Yii::$app->session->get('name')."\n"; 

    print_R(\Yii::$app->user); 
} 

Mehr Informationen über Ihr Problem: Link

Hinweis: Es gibt keine Sitzung in der Konsole.

2

Der Grund ist einfach. Guide sagt über Anwendungskomponenten (Benutzer ist eine Komponente):

Benutzer: stellt die Benutzerauthentifizierungsinformationen dar. Diese Komponente ist nur in Webanwendungen verfügbar. Weitere Informationen finden Sie im Abschnitt Authentifizierung.

So Yii::$app->user es nicht in Konsolenanwendungen verfügbar.

Als Konsequenz müssen Sie diese Komponente in Modellklassen verwenden, die auch von Konsolenanwendungen verwendet werden.

Hinweis: Es wird intern von BlameableBehavior verwendet, dies macht jedoch keine Probleme, da der Benutzer null sein wird, wenn ein Modell gespeichert/erstellt wird und kein Benutzer verfügbar ist.

Verwandte Themen