我想在我的组件中获取控制器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'
],
之前感谢。
答案 0 :(得分:1)
我认为是null,因为你处于引导阶段,此时控制器实例还不可用。
我建议你不要在init()函数中执行它。
但是当应用程序启动阶段结束时,您可以使用正确的activityLogs静态函数..然后正确定义控制器。