要获得当前用户,我使用Yii::app()->user->name
,当我以用户身份登录时,它就可以了。
但是当cron job executin命令并尝试Yii::app()->user->name
时,它会获得 Property" CConsoleApplication.user"未定义..
如何在我的方法中检查Yii::app()
user
os定义
我尝试使用isset()
但仍然遇到同样的错误。
答案 0 :(得分:4)
问题是,您无法在控制台应用程序中使用CWebUser。
如果您依赖于需要CWebUser的组件,则必须在组件中检测到这一点并为此案例创建某种解决方法。例如,您可以在范围代码中生成一个异常部分,以确保不会调用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,
), ...
);
}
另一个简单的isset()检查对我有用:
if (!isset(Yii::app()->user))
echo "username not set\n";
return;
控制台输出: