如何在 Yii2 中将变量从模块传递到控制器?

How to pass variable from Module to Controller in 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 存储在 public 变量中。

到目前为止一切顺利...

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

你试过了吗

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

然后就

echo $v1Module->yourPublicVariable;

要从控制器访问模块,您应该简单地使用$this->module

从一个角度来看:$this->context->module

此处无需使用getModule()

阅读更多:http://www.yiiframework.com/doc-2.0/yii-base-controller.html#$module-detail

PS:要访问其 controllers/views 之外的模块,您可以使用 :

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