为了获取当前用户,我使用 Yii::app()->user->name
当我以用户身份登录时就可以了。
但是当 cron 作业执行命令并尝试 Yii::app()->user->name
时,它得到 Property "CConsoleApplication.user"is not Defined..
如何在我的方法内部检查 Yii::app()
user
操作系统是否已定义
我尝试使用 isset()
但仍然遇到相同的错误。
最佳答案
问题是,您不能在控制台应用程序中使用 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;
控制台输出:
关于php - Yii 获取当前登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30663443/