Yii 1.x 透過 Yii::app()->request 元件提供豐富的請求資訊存取方法,本文彙總最常用的 15 種取值方式。
https://localhost/CMS/public/index.php?r=news&id=1
| 需求 | 程式碼 | 回傳範例 |
|---|---|---|
| 完整域名(含協定) | Yii::app()->request->hostInfo | https://localhost |
| 當前 URL(不含域名) | Yii::app()->request->getUrl() | /CMS/public/index.php?r=news&id=1 |
| 首頁網址(不含域名) | Yii::app()->user->returnUrl | /CMS/public/index.php |
| 根目錄網址(不含域名) | Yii::app()->homeUrl | /CMS/public/index.php |
| 基礎路徑(不含 index.php) | Yii::app()->request->baseUrl | /CMS/public |
| 專案相對根路徑 | Yii::app()->baseUrl | /CMS/public |
| 客戶端 IP | Yii::app()->request->userHostAddress | 127.0.0.1 |
| 是否為 POST 請求 | Yii::app()->request->isPostRequest | true / false |
| protected 實體路徑 | Yii::app()->basePath | /var/www/CMS/protected |
| 上一頁 URL(返回用) | Yii::app()->request->urlReferrer | https://localhost/CMS/public/index.php |
| 當前 Action ID | Yii::app()->getController()->getAction()->id | view |
| 專案根目錄實體路徑 | dirname(Yii::app()->basePath) | /var/www/CMS |
| GET/POST 參數 | Yii::app()->request->getParam('id') | 1 |
| 設定時區 | config/main.php: 'timeZone'=>'Asia/Taipei' | - |
| 防重複提交(重導向) | $this->refresh() | - |
Yii::app()->createUrl('controller/action') 或 CHtml::link(),自動處理 baseUrl。Yii::app()->controller->module->id、Yii::app()->controller->id、Yii::app()->controller->action->id。Yii::$app->request,方法名稱大同小異(如 getHostInfo()、getUrl()、getUserIP())。