如何在Yii2中将变量从Module传递给Controller?

时间:2015-02-27 09:18:08

标签: api rest yii2

我正在使用Yii2构建restful无状态API ...到目前为止一切顺利。现在我在菜鸟问题上失败了。

我决定制作API应用程序(Yii首选)并将API作为模块。所以我的结构是:

- modules
-- v1
--- components
--- controllers
--- models 

当然,在v1文件夹中有Module.php。在这里,我进行身份验证,如:

$behaviors['authenticator'] = [
            'class' => HttpBasicAuth::className(),
            'auth' => function($username, $password) {
            ... get user's data from DB ...
            [HERE]
            }
    ];

并且在[HERE]点,我在公共变量中输入用户的ID。

到目前为止一直很好......

因此,当我在控制器内部调用v1/abc/index abc控制器时,我想访问存储在点[HERE]的用户ID。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

要从控制器访问模块,您只需使用$this->module

从视角来看:$this->context->module

此处无需使用getModule()

了解详情:http://www.yiiframework.com/doc-2.0/yii-base-controller.html#$module-detail

PS:要访问其控制器/视图之外的模块,您可以使用:

Yii::app()->getModule('module');

答案 1 :(得分:2)

你试过吗

$v1Module = Yii::app()->getModule('v1');

然后简单地

echo $v1Module->yourPublicVariable;