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

时间:2015-02-06 05:07:59

标签: yii2

我如何获得当前行动?

此代码:

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

返回错误:

  

PHP注意 - yii \ base \ ErrorException

     

尝试获取非对象的属性

4 个答案:

答案 0 :(得分:10)

您应该使用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;
    }
}

答案 1 :(得分:8)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

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

并使用此名称获取控制器名称:

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

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

参考:Class yii\web\Controller