如何获得当前操作?Yii2在控制器中获取当前操作
此代码:
if (!Yii::$app->controller->action->id == 'lang') {
Url::remember();
}
返回一个错误:
PHP Notice – yii\base\ErrorException
Trying to get property of non-object
如何获得当前操作?Yii2在控制器中获取当前操作
此代码:
if (!Yii::$app->controller->action->id == 'lang') {
Url::remember();
}
返回一个错误:
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;
}
}
您可以通过:)
Yii::$app->controller->id;
这就是你如何得到控制器ID,而不是操作ID。 – 2016-11-14 23:21:52
你可以通过使用simpy Yii :: $ app-> controller-> action-> id; – 2016-11-15 09:18:19
获得当前活动ID,如果使用Yii2鉴于 - 试试这个: $this->context->action->id;
这完全有效。 – 2016-11-14 23:28:43
获取活动ID是正确的。你在哪里打电话?看起来像'应用程序'在那个时候没有初始化。此外,检查应该是'if(Yii :: $ app-> controller-> action-> id!='lang')'。从init()函数获取来自控制器的 – arogachev 2015-02-06 05:16:29
。我必须在每个页面上做这个检查 – 2015-02-06 05:33:09
请在你提到问题的地方添加完整的代码。 – arogachev 2015-02-06 05:33:33