2011-12-24 56 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