Yii2在控制器中获取当前操作

Yii2在控制器中获取当前操作,yii2,Yii2,如何获取当前操作 此代码: if (!Yii::$app->controller->action->id == 'lang') { Url::remember(); } 返回一个错误: PHP通知–yii\base\ErrorException 正在尝试获取非对象的属性 您应该使用event而不是init() 您也可以简单地使用$this,因为它包含当前控制器 public function beforeAction($action) { if (parent

如何获取当前操作

此代码:

if (!Yii::$app->controller->action->id == 'lang') {
    Url::remember();
}
返回一个错误:

PHP通知–yii\base\ErrorException

正在尝试获取非对象的属性

您应该使用event而不是
init()

您也可以简单地使用
$this
,因为它包含当前控制器

public function beforeAction($action)
{
    if (parent::beforeAction($action)) {
        if ($this->action->id == 'lang') {
            Url::remember();
        }

        return true; // or false if needed
    } else {
        return false;
    }
}

您可以通过以下方式获取当前操作id:)


如果在视图中使用Yii2,请尝试以下操作:
$this->context->action->id

您可以通过以下方式获取当前操作名称:

Yii::$app->controller->action->id
并使用以下名称获取控制器名称:

 Yii::$app->controller->id;
注意:请记住,只有在初始化应用程序后,这些功能才会起作用。可能的用法:
在控制器动作中
/
在模型中
或视图中


参考:

获取操作id是正确的。你在哪里叫这个?似乎
应用程序
此时未初始化。此外,检查还应该是来自控制器、来自init()函数的if(Yii::$app->controller->action->id!='lang')。我必须在每个页面上进行此检查。请在问题的调用位置添加完整的代码。你的意思是
$this->action->id
?这是获得控制器id的方式,而不是操作id。你可以使用simpy Yii:$app->controller->action->id;
 Yii::$app->controller->id;