- Yii 教程
- Yii - 首頁
- Yii - 概述
- Yii - 安裝
- Yii - 建立頁面
- Yii - 應用結構
- Yii - 入口指令碼
- Yii - 控制器
- Yii - 使用控制器
- Yii - 使用操作
- Yii - 模型
- Yii - 小部件
- Yii - 模組
- Yii - 檢視
- Yii - 佈局
- Yii - 資源
- Yii - 資源轉換
- Yii - 擴充套件
- Yii - 建立擴充套件
- Yii - HTTP 請求
- Yii - 響應
- Yii - URL 格式
- Yii - URL 路由
- Yii - URL 規則
- Yii - HTML 表單
- Yii - 驗證
- Yii - 特設驗證
- Yii - AJAX 驗證
- Yii - 會話
- Yii - 使用快閃記憶體資料
- Yii - Cookie
- Yii - 使用 Cookie
- Yii - 檔案上傳
- Yii - 格式化
- Yii - 分頁
- Yii - 排序
- Yii - 屬性
- Yii - 資料提供者
- Yii - 資料小部件
- Yii - ListView 小部件
- Yii - GridView 小部件
- Yii - 事件
- Yii - 建立事件
- Yii - 行為
- Yii - 建立行為
- Yii - 配置
- Yii - 依賴注入
- Yii - 資料庫訪問
- Yii - 資料訪問物件
- Yii - 查詢構建器
- Yii - 活動記錄
- Yii - 資料庫遷移
- Yii - 主題
- Yii - RESTful API
- Yii - RESTful API 實戰
- Yii - 欄位
- Yii - 測試
- Yii - 快取
- Yii - 片段快取
- Yii - 別名
- Yii - 日誌記錄
- Yii - 錯誤處理
- Yii - 身份驗證
- Yii - 授權
- Yii - 本地化
- Yii - Gii
- Gii – 建立模型
- Gii – 生成控制器
- Gii – 生成模組
- Yii 有用資源
- Yii - 快速指南
- Yii - 有用資源
- Yii - 討論
Yii - 響應
當 Web 應用程式處理請求時,它會生成一個響應物件,其中包含 HTTP 標頭、正文和 HTTP 狀態程式碼。在大多數情況下,您將使用響應應用程式元件。預設情況下,它是一個yii\web\Response例項。
要管理響應 HTTP 狀態程式碼,請使用yii\web\Response::$statusCode屬性。yii\web\Response::$statusCode的預設值為 200。
步驟 1 - 向SiteController新增名為actionTestResponse的函式。
public function actionTestResponse() {
Yii::$app→response->statusCode = 201;
}
步驟 2 - 如果您將 Web 瀏覽器指向https://:8080/index.php?r=site/testresponse,您應該會注意到 201 已建立的響應 HTTP 狀態。
如果您想指示請求不成功,您可以丟擲預定義的 HTTP 異常之一:
yii\web\BadRequestHttpException - 狀態程式碼 400。
yii\web\UnauthorizedHttpException - 狀態程式碼 401。
yii\web\ForbiddenHttpException - 狀態程式碼 403。
yii\web\NotFoundHttpException - 狀態程式碼 404。
yii\web\MethodNotAllowedHttpException - 狀態程式碼 405。
yii\web\NotAcceptableHttpException - 狀態程式碼 406。
yii\web\ConflictHttpException - 狀態程式碼 409。
yii\web\GoneHttpException - 狀態程式碼 410。
yii\web\UnsupportedMediaTypeHttpException - 狀態程式碼 415。
yii\web\TooManyRequestsHttpException - 狀態程式碼 429。
yii\web\ServerErrorHttpException - 狀態程式碼 500。
步驟 3 - 按如下程式碼修改actionTestResponse函式。
public function actionTestResponse() {
throw new \yii\web\GoneHttpException;
}
步驟 4 - 在 Web 瀏覽器的位址列中鍵入https://:8080/index.php?r=site/test-response,您可以看到如下所示的410 Gone響應 HTTP 狀態。
步驟 5 - 您可以透過修改響應元件的headers屬性來發送 HTTP 標頭。要向響應新增新的標頭,請按如下程式碼修改actionTestResponse函式。
public function actionTestResponse() {
Yii::$app->response->headers->add('Pragma', 'no-cache');
}
步驟 6 - 轉到https://:8080/index.php?r=site/test-response,您將看到我們的Pragma標頭。
Yii 支援以下響應格式:
HTML - 由 yii\web\HtmlResponseFormatter 實現。
XML - 由 yii\web\XmlResponseFormatter 實現。
JSON - 由 yii\web\JsonResponseFormatter 實現。
JSONP - 由 yii\web\JsonResponseFormatter 實現。
RAW - 無任何格式的響應。
步驟 7 - 要以JSON格式響應,請修改actionTestResponse函式。
public function actionTestResponse() {
\Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return [
'id' => '1',
'name' => 'Ivan',
'age' => 24,
'country' => 'Poland',
'city' => 'Warsaw'
];
}
步驟 8 - 現在,在位址列中鍵入https://:8080/index.php?r=site/test-response,您可以看到以下JSON響應。
Yii 透過傳送 Location HTTP 標頭來實現瀏覽器重定向。您可以呼叫yii\web\Response::redirect()方法將使用者瀏覽器重定向到 URL。
步驟 9 - 按此方式修改actionTestResponse函式。
public function actionTestResponse() {
return $this->redirect('https://tutorialspoint.tw/');
}
現在,如果您訪問https://:8080/index.php?r=site/test-response,您的瀏覽器將被重定向到TutorialsPoint網站。
傳送檔案
Yii 提供以下方法來支援檔案傳送:
yii\web\Response::sendFile() - 傳送現有檔案。
yii\web\Response::sendStreamAsFile() - 將現有檔案流作為檔案傳送。
yii\web\Response::sendContentAsFile() - 將文字字串作為檔案傳送。
按此方式修改 actionTestResponse 函式:
public function actionTestResponse() {
return \Yii::$app->response->sendFile('favicon.ico');
}
鍵入https://:8080/index.php?r=site/test-response,您將看到favicon.ico檔案的下載對話方塊:
在呼叫yii\web\Response::send()函式之前,不會發送響應。預設情況下,此方法在yii\base\Application::run()方法的末尾呼叫。要傳送響應,yii\web\Response::send()方法將執行以下步驟:
- 觸發 yii\web\Response::EVENT_BEFORE_SEND 事件。
- 呼叫 yii\web\Response::prepare() 方法。
- 觸發 yii\web\Response::EVENT_AFTER_PREPARE 事件。
- 呼叫 yii\web\Response::sendHeaders() 方法。
- 呼叫 yii\web\Response::sendContent() 方法。
- 觸發 yii\web\Response::EVENT_AFTER_SEND 事件。