2016-09-23 62 views
0

我想给Yii2用户数据的第三方PHP应用程序访问(HumHub),并尝试这样的:如何第三方应用程序访问Yii2(HumHub)

function getUserId() { 
     require_once('../protected/vendor/yiisoft/yii2/Yii.php'); 
     $yiiConfig = require('../protected/config/common.php'); 
     (new humhub\components\Application($yiiConfig)); 
     $user = Yii::$app->user->identity; 

     return $user; 
    } 

这是行不通的。直到new humhub\components\Application($yiiConfig)之前没有任何错误,但第三方应用程序中断并没有抛出任何错误,并且该函数不返回任何内容。

我确实发现this solution哪些不起作用。

是否有理由这不起作用或有没有替代解决方案来正确获取Yii2用户数据?

+0

你读[**这个官方**](http://www.yiiframework.com/doc-2.0/guide-tutorial-yii-integration.html#使用-yii-in-others)文件? – SaidbakR

回答

0

这是如何做到这一点的HumHub V1.0现在

require_once('../protected/vendor/yiisoft/yii2/Yii.php'); 
    $config = yii\helpers\ArrayHelper::merge(
     require('../protected/humhub/config/common.php'), 
     require('../protected/humhub/config/web.php'), 
     (is_readable('../protected/config/dynamic.php')) ? require('../protected/config/dynamic.php') : [], 
     require('../protected/config/common.php'), 
     require('../protected/config/web.php') 
    ); 
    new yii\web\Application($config); // No 'run()' invocation! 

我可以得到$用户对象:

$user = Yii::$app->user->identity; 
+0

这不是一个答案,只需编辑你的问题并添加它。 – SaidbakR

+1

为什么这不是一个答案?当我在问题中运行代码时,它不起作用。当我在这个答案中运行代码时,它工作。 – lilbiscuit

+0

对不起,我错误地认为'HumHub V1.0'是'Yii V1.0' – SaidbakR

0

事实上的错误应该被抛出,但是,错误的设置您的PHP可能会被覆盖或设置为不显示错误。

您可以调用未定义的对象Yii::$app->user->identity。原因是,从documentation因为你还没有初始化Yii对象。所以,你的代码应该如下:

function getUserId() { 
     require_once('../protected/vendor/yiisoft/yii2/Yii.php'); 
     $yiiConfig = require('../protected/config/common.php'); 
     (new humhub\components\Application($yiiConfig)); // try to comment this line too if it does not work 
     // Add The Following Line 
     new yii\web\Application($yiiConfig); // Do NOT call run() here 
     $user = Yii::$app->user->identity; 

     return $user; 
    } 
相关问题