我想强制所有用户在访问我的网站页面之前登录.我已经关注了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)
Kor*_*lis 44
你试过了吗:
Yii::app()->controller->id
Run Code Online (Sandbox Code Playgroud)
和:
Yii::app()->controller->action->id
Run Code Online (Sandbox Code Playgroud)
?
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)
在Yii2:
调用的问题Yii::$app->controller->id是当你在某个地方调用它时(例如:在你的一个顶级抽象控制器中),Yii::$app->controller可能还没有实例化,所以它会返回错误.
只需直接调用urlManagermap请求即可:
var_dump(Yii::$app->urlManager->parseRequest(Yii::$app->request))
Run Code Online (Sandbox Code Playgroud)