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;