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

Yii2 Get current action in controller

如何获取当前操作?

此代码:

if (!Yii::$app->controller->action->id == 'lang') {
    Url::remember();
}

returns一个错误:

PHP Notice – yii\base\ErrorException

Trying to get property of non-object

您应该使用 beforeAction() 事件而不是 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
 Yii::$app->controller->id;

如果在视图中使用 Yii2 - 试试这个: $this->context->action->id;

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

Yii::$app->controller->action->id

并用这个获取控制器名称:

 Yii::$app->controller->id;

注意:请记住,这些仅在应用程序初始化后才有效。可能的用法:inside a controller action/inside a modelinside a view

参考:Class yii\web\Controller