在Yii2引导程序组件中获取控制器ID

时间:2016-02-12 18:10:49

标签: yii yii2 yii-extensions yii-components

我想在我的组件中获取控制器ID及其操作,这是一个引导组件,但是当组件运行时Yii::$app->controller为空,我认为这是由于在控制器运行之前运行。

如何在我的bootstrap组件中获取控制器ID?

还是有其他方法可以在任何控制器之后运行任务吗? 组件文件:     

namespace common\components;

use yii;

use common\models\Statistic;

class ActivityLogs extends \yii\base\Component
{
    public function init() {

        Yii::error(Yii::$app->controller->id); 
        // Yii::$app->controller is null 

        parent::init();
    }
}

配置文件:

'bootstrap' => ['log', 'ActivityLogs'],
'controllerNamespace' => 'frontend\controllers',
'components' => [
    'user' => [
        'identityClass' => 'common\models\User',
        'enableAutoLogin' => true,
    ],
    'ActivityLogs'=>[
        'class' => 'common\components\ActivityLogs'
    ],

之前感谢。

1 个答案:

答案 0 :(得分:1)

我认为是null,因为你处于引导阶段,此时控制器实例还不可用。

我建议你不要在init()函数中执行它。

但是当应用程序启动阶段结束时,您可以使用正确的activityLogs静态函数..然后正确定义控制器。