Yii 專案中頻繁需要取得資源發布路徑、控制器 ID、請求判斷等。本文整理實務常用的路徑與請求相關方法。
<?php
// 在 Controller 中註冊 CSS/JS
Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl . '/css/my.css');
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/js/my.js');
// 模組資源目錄(需在模組類別定義 $assetsUrl)
echo $this->module->assetsUrl . '/css/main.css';
// 核心 JS 套件(對應 framework/web/js/packages.php)
Yii::app()->clientScript->registerCoreScript('jquery');
?>
<?php // 目前 Controller ID Yii::app()->getController()->id; // 目前 Action ID Yii::app()->getController()->getAction()->id; ?>
| 需求 | 方法 |
|---|---|
| 客戶端 IP | Yii::app()->request->userHostAddress |
| 是否 POST | Yii::app()->request->isPostRequest |
| 是否 AJAX | Yii::app()->request->isAjaxRequest |
| 當前域名含協定 | Yii::app()->request->hostInfo |
| 當前 URL(含查詢字串) | Yii::app()->request->url |
| 首頁 URL | Yii::app()->homeUrl |
| 上一頁 URL(返回用) | Yii::app()->request->urlReferrer |
| 使用者設定的返回 URL | Yii::app()->user->returnUrl |
<?php
// protected 目錄實體路徑
YII::app()->basePath;
// 專案根目錄
dirname(Yii::app()->basePath);
// 路徑別名(需在 main.php 定義)
Yii::getPathOfAlias('webroot'); // 對應專案根目錄
Yii::getPathOfAlias('application'); // 對應 protected
?>
在 protected/config/main.php 頂部定義:
Yii::setPathOfAlias('myext', dirname(__FILE__) . '/../extensions/myext');
之後可用 Yii::getPathOfAlias('myext') 取得。