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

Dmi*_*rik 7 yii2

我怎样才能获得当前行动?

这段代码:

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

返回错误:

PHP注意 - yii\base\ErrorException

试图获得非对象的属性

aro*_*hev 11

您应该使用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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 你的意思是`$ this-> action-> id`? (2认同)

小智 9

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


Imt*_*iaz 5

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

Yii::$app->controller->action->id
Run Code Online (Sandbox Code Playgroud)

并使用以下命令获取控制器名称:

 Yii::$app->controller->id;
Run Code Online (Sandbox Code Playgroud)

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

参考:类 yii\web\Controller