Response 类別
Response 类別包含处理 HTTP 回應及瀏覽器輸出的方法。
設定狀態表頭
在 Fuel 裡,狀態表頭被視为「特別」的表頭,你想保留其他表頭的話別設定它,
狀態表頭在控制器裡設定如下:
$response = new Response($body, 404);
設定狀態表頭和其他表頭
$headers = array (
'Cache-Control' => 'no-cache, no-store, max-age=0, must-revalidate',
'Expires' => 'Mon, 26 Jul 1997 05:00:00 GMT',
'Pragma' => 'no-cache',
);
$response = new Response($body, 404, $headers);
forge($body = null, $status = 200, array $headers = array())
forge 方法建立一个 Response 类別的新實例。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$body |
null
|
回應主體,也就是你想回傳給呼叫者的回應。 |
$status |
200
|
給此回應的 HTTP 狀態码。預設值为 200 OK。 |
$headers |
array()
|
任何應成为該回應一部份的 HTTP 表頭。 |
|
回傳 |
Response 物件 |
觸发 |
'response_created' 事件在物件實例化之後 |
範例 |
// 建立一个回應物件,使用一个 View 做为主體,以及一个 404 NOT FOUND 狀態码
return Response::forge(View::forge('errors/404page'), 404);
|
redirect($url = '', $method = 'location', $redirect_code = 302)
redirect 方法提供不同的重導到新 URL 的方法。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$url |
''
|
要重導向的 URL。 |
$method |
'location'
|
要使用的重導向方法。支援 'location' 與 'refresh'。 |
$redirect_code |
302
|
要送回做为重導向一部分的 HTTP 狀態码。 |
|
回傳 |
此方法終止目前的指令码,不回傳。 |
範例 |
// 使用一个 URL
Response::redirect('http://example.com/home', 'refresh');
// 或使用一个相對 URI
Response::redirect('site/about');
|
这个方法支援 URL 的萬用字元替換。詳情請見 Uri::segment_replace()。
你可以透過在你应用程序的 config.php 設定 response.redirect_with_wildcards
为 false
來停用它。
redirect_back($url = '', $method = 'location', $redirect_code = 302)
redirect_back方法能让你重導向回來源頁面,
并提供不同的重導到新 URL 的方法。如果前一頁不是你应用程序的一部分(也就是說,該使用者來自其他網站),
或沒給 URL,它会重導向应用程序首頁。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$url |
''
|
要重導向的 URL。 |
$method |
'location'
|
要使用的重導向方法。支援 'location' 與 'refresh'。 |
$redirect_code |
302
|
要送回做为重導向一部分的 HTTP 狀態码。 |
|
回傳 |
此方法終止目前的指令码,不回傳。 |
範例 |
// 重定向回頁面。如果沒有 'back',前往到 dashboard 頁面
Response::redirect_back('/dashboard', 'refresh');
|
这个方法支援 URL 的萬用字元替換。詳情請見 Uri::segment_replace()。
你可以透過在你应用程序的 config.php 設定 response.redirect_with_wildcards
为 false
來停用它。
set_status($status = 200)
set_status 方法能让你更新一个 Response 物件的 HTTP 狀態码設定。
靜態 |
否 |
參数 |
參数 |
預設 |
描述 |
$status |
200
|
給此回應的 HTTP 狀態码。預設值为 200 OK。 |
|
回傳 |
目前物件,鍊結用 |
範例 |
$response = new Response();
// 这将是一个 NOT FOUND 回應
$response->set_status(404);
|
set_header 方法可以設定自訂的 HTTP 表頭。
靜態 |
否 |
參数 |
參数 |
預設 |
描述 |
$name |
必要 |
要添加的表頭名稱。 |
$value |
必要 |
需要被添加到 HTTP 表頭的字串。 |
$replace |
true
|
預設所有表頭将被同名的值取代,
如果你設定这个參数为 false,表頭将不会也不能被覆寫。 |
|
回傳 |
空 |
範例 |
$response = new Response();
// 我們将輸出 PDF
$response->set_header('Content-Type', 'application/pdf');
// 将被稱为 downloaded.pdf
$response->set_header('Content-Disposition', 'attachment; filename="downloaded.pdf"');
// 設定不快取
$response->set_header('Cache-Control', 'no-cache, no-store, max-age=0, must-revalidate');
$response->set_header('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT');
$response->set_header('Pragma', 'no-cache');
// 更多範例
$response->set_header('Content-Language', 'en');
$response->set_header('Content-Type', 'text/html; charset=utf-8');
return $response;
|
注意名稱是唯一的,如果相同名稱被使用的話将覆寫掉其他的。
get_header 方法能让你取回一个先前設定的自訂 HTTP 表頭。
靜態 |
否 |
參数 |
參数 |
預設 |
描述 |
$name |
選擇性 |
要取得的表頭名稱。如果沒給,所有表頭会被回傳。 |
|
回傳 |
混合。在单一表頭的情況下是字串,在所有表頭被回傳的情況下是陣列。 |
範例 |
$response = new Response();
$response->set_header('Pragma', 'no-cache');
// 回傳 'no-cache'
$header = $response->get_header('Pragma');
// 回傳 array('Pragma' => 'no-cache')
$header = $response->get_header();
|
body($value = false)
body 方法允許取得目前回應主體,或設定一个新的。
靜態 |
否 |
參数 |
參数 |
預設 |
描述 |
$value |
選擇性 |
要設定的 Response 主體。如果沒給,目前回應主體会被回傳。 |
|
回傳 |
混合。目前回應主體,或給鍊結用的目前回應物件。 |
範例 |
$response = new Response();
$response->body('This is the response body');
// 回傳 'This is the response body'
$body = $response->body();
|
send_headers 方法傳送設定的表頭到瀏覽器,包含請求的 HTTP 狀態。
靜態 |
否 |
參数 |
無 |
回傳 |
空 |
範例 |
$response->send_headers();
|
請注意,通常你不必手动呼叫这个方法,Fuel 会打理好此方法做为請求处理的一部份。
send($send_headers = false)
send 方法发送回應主體到輸出緩衝(意即輸出)。
靜態 |
否 |
參数 |
參数 |
預設 |
描述 |
$send_headers |
選擇性 |
如果为 true,在发送回應主體之前发送任何定義的 HTTP 表頭。 |
|
回傳 |
空 |
範例 |
// 寫出任何回應主體
$response->send();
|
請注意,通常你不必手动呼叫这个方法,Fuel 会打理好此方法做为請求处理的一部份。