我如何获得当前行动?
此代码:
if (!Yii::$app->controller->action->id == 'lang') {
Url::remember();
}
返回错误:
PHP注意 - yii \ base \ ErrorException
尝试获取非对象的属性
答案 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 model
或inside a view