php - Yii 获取当前登录用户

标签 php yii

为了获取当前用户,我使用 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;

控制台输出:

enter image description here

关于php - Yii 获取当前登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30663443/

相关文章:

php - 如何在php中将页面重定向到https?

PHP:register_shutdown_function 并不总是适用于 Symfony 2

twitter-bootstrap - Yii 中的图片上传

Javascript : Uncaught InvalidStateError: Failed to read the 'selectionDirection'

yii - 在 yii2 表格小部件中显示时合并两列

php - Class::save() 的声明应该与 Class::save() 的声明兼容

php - Bootstrap 的文件夹结构

php - 如果我用 "when"命名 mysql 表中的字段会发生什么

使用 Nginx 的 Php - 403 禁止访问

php - 如何在 Yii 中获取不带参数的当前 url?