2011-12-24 106 views
10

我正在使用Yii。
如果我的网址http://localhost/evengee/event/page/id/2/sfn+master/?tab=3 我真正的URL(文件路径)只有http://localhost/evengee
我将如何得到,最好在视图:如何获取Yii中没有参数的当前url?

  1. 完整的URL http://localhost/evengee/event/page/id/2/sfn+master/?tab=3
  2. 网址没有明确的参数http://localhost/evengee/event/page/id/2/sfn+master/

我知道我可以分裂/爆炸str_replace的?并使用$ _SERVER。宁愿使用 Yii本地方法。

回答

17

为:

  • 完整URL(http://localhost/even/page/id/2/?t=3)使用 Yii::app()->request->getUrl()

  • URL不带参数(http://localhost/even/page/id/2/使用 Yii::app()->request->getPathInfo()

第二个会给你没有架构,服务器和查询字符串的URL。这似乎很好。

+3

我尝试'Yii :: app() - > request-> getUrl()',但是这并没有返回域名。 – GusDeCooL 2012-11-25 11:18:05

+0

如果您想要完整的域名,请使用createAbsoluteUrl。 (Yii :: app() - > request-> getUrl());' 或者 'Yii :: app() - > createAbsoluteUrl(Yii :: app() - > request-> getUrl());' – 2014-04-14 19:55:33

4

要获得完整的URL,使用CHttpRequest Yii::app()->request->getRequestUrl();

getRequestUrl()方法可以从CApplication方法获取当前页面的控制器,模块和动作名称 Yii::app()->getController()->id; //gets you the controller id

Yii::app()->getController()->getAction()->id; //gets you the action id

您可以使用CApplication的baseURL属性拼凑一个URL

Yii::app()->baseURL

+4

CHttpRequest及其行为没有名为“getRequestUrl”的方法或闭包。那应该是'我'不是'l' – glyph 2013-05-22 14:27:16

+0

它应该是Yii :: app() - > request-> getUrl(); – 2015-04-03 03:17:00