2015-06-05 4 views
1

Чтобы получить текущего пользователя, я использую Yii::app()->user->name, это нормально, когда я зарегистрирован как пользователь.Yii получить текущий зарегистрированный пользователь

Но когда хроны executin команды и попытаться Yii::app()->user->name это получить Property «CConsoleApplication.user» не определен ..

Как получить проверить внутри моего метода делает Yii::app()user ОСОВ определяются

I» m попытайтесь использовать isset(), но все равно получите ту же ошибку.

ответ

3

Дело в том, что вы не можете использовать CWebUser в консольном приложении.

Если вы полагаетесь на компонент, который требует CWebUser, вам придется обнаружить это в компоненте и создать какое-то обходное решение для этого случая. Например, вы могли бы genereate в коде область видимости часть исключений, где гарантирует, что Yii::app()->user не называется:

public function scopes(){ 
     if (Yii::app() instanceof CConsoleApplication) { 
       $user = array(''); //no condition 
     }else{ 
       $user = array(
         'condition'=>'id='.Yii::app()->user->id, 
        ); 
     } 
     return array(
       'user' => $user, 
       'active' => array(
            'condition'=>'status='.self::STATUS_ACTIVE, 
          ), ... 
     ); 
} 

Другая проверка простой Исеть(), который работает для меня:

if (!isset(Yii::app()->user)) 
     echo "username not set\n"; 
return; 

Консольный вывод:

enter image description here

Смежные вопросы