在Yii中获取当前控制器和操作ID

Ham*_*shi 31 php yii yii1.x

我想强制所有用户在访问我的网站页面之前登录.我已经关注了Larry Ullman的教程强制登录Yii中的所有页面.

根据教程,您可以对某些页面进行例外处理,以避免重定向到登录页面.为了检查当前控制器,它已经检查了$_GET值.我的问题是我曾经习惯urlManager重写URL并$_GET给我一个空值.我有什么方法可以用来获得当前控制器和我班级成绩的动作吗?

我尝试了以下但是在组件类的范围内无法访问它:

Yii::app()->controller->getId
Run Code Online (Sandbox Code Playgroud)

eXt*_*eme 45

是的,您可以controller/action通过撤消urlManager规则获取当前路线:

Yii::app()->urlManager->parseUrl(Yii::app()->request)
Run Code Online (Sandbox Code Playgroud)

  • 这正是我所寻找的.非常感谢 (5认同)
  • 简单快速:Yii :: $ app-> requestedRoute (2认同)

Kor*_*lis 44

你试过了吗:

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

和:

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

  • 试试Yii :: $ app-> controller-> id (3认同)

Kul*_*ngi 18

就像现在在Yii2

得到最新的 controller name

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

当前 controller object

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

目前action name:

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

目前route:

Yii::$app->requestedRoute
Run Code Online (Sandbox Code Playgroud)


小智 11

使用Yii2,获取当前控制器对象:

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

从控制器,使用以下命令获取当前操作作为字符串:

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


Jin*_* Li 8

在Yii2:

调用的问题Yii::$app->controller->id是当你在某个地方调用它时(例如:在你的一个顶级抽象控制器中),Yii::$app->controller可能还没有实例化,所以它会返回错误.

只需直接调用urlManagermap请求即可:

var_dump(Yii::$app->urlManager->parseRequest(Yii::$app->request))
Run Code Online (Sandbox Code Playgroud)


Cre*_*toR 5

尝试 Yii::app()->controller->getRoute()