亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄 搜索
閱讀前篇 簡介 Yii 是什么 從 Yii 1.1 升級 入門 安裝 Yii 運行應用 第一次問候 使用Forms 數據庫應用 使用 Gii 生成代碼 進階 應用結構 概述 入口腳本 應用(Applications) 應用組件(Application Components) 控制器(Controllers) 模型(Models) 視圖(views) 模塊(Modules) 過濾器(Filters) 小部件(Widgets) 前端資源(Assets) 擴展(Extensions) 請求處理 運行概述 啟動引導(Bootstrapping) 路由和創(chuàng)建URL 請求(Requests) 響應(Responses) Sessions 和 Cookies 錯誤處理(Handling Errors) 日志(Logging) 關鍵概念 組件(Component) 屬性(Property) 事件(Events) 行為(Behaviors) 配置(Configurations) 別名(Aliases) 類自動加載(Autoloading) 服務定位器(Service Locator) 依賴注入容器(Dependency Injection Container) 配合數據庫工作 數據庫訪問 (Data Access Objects) 查詢生成器(Query Builder) 活動記錄(Active Record) 數據庫遷移(Migrations) Sphinx Redis MongoDB Elasticsearch 接收用戶數據 創(chuàng)建表單(Creating Forms) 輸入驗證(Validating Input) 文件上傳(Uploading Files) 收集列表輸入(Collecting Tabular Input) 多模型的復合表單(Getting Data for Multiple Models) 顯示數據 格式化輸出數據(Data Formatting) 分頁(Pagination) 排序(Sorting) 數據提供器(Data Providers) 數據小部件(Data Widgets) 客戶端腳本使用(Working with Client Scripts) 主題(Theming) 安全 認證(Authentication) 授權(Authorization) 處理密碼(Working with Passwords) 客戶端認證(Auth Clients) 最佳安全實踐(Best Practices) 緩存 概述 數據緩存 片段緩存 頁面緩存 HTTP 緩存 RESTfull Web服務 快速入門(Quick Start) 資源(Resources) 控制器(Controllers) 路由(Routing) 格式化響應(Response Formatting) 授權認證(Authentication) 速率限制(Rate Limiting) 版本(Versioning) 錯誤處理(Error Handling) 開發(fā)工具 調試工具欄和調試器 使用Gii生成代碼 生成API文檔 測試 概述(Overview) 配置測試環(huán)境(Testing environment setup) 單元測試(Unit Tests) 功能測試(Function Tests) 驗收測試(Acceptance Tests) 測試夾具(Fixtures) 高級專題 高級應用模板 創(chuàng)建自定義應用程序結構 控制臺命令 核心驗證器(Core Validators) 國際化 收發(fā)郵件 性能優(yōu)化 共享主機環(huán)境 模板引擎 集成第三方代碼 小部件 Bootstrap 小部件 Jquery UI 助手類 概述 Array 助手(ArrayHelper) Html 助手(Html) Url 助手(Url)
文字

請求

請求

一個應用的請求是用 yii\web\Request 對象來表示的,該對象提供了諸如 請求參數(譯者注:通常是GET參數或者POST參數)、HTTP頭、cookies等信息。 默認情況下,對于一個給定的請求,你可以通過?request?application component?應用組件(yii\web\Request 類的實例) 獲得訪問相應的請求對象。在本章節(jié),我們將介紹怎樣在你的應用中使用這個組件。

請求參數

要獲取請求參數,你可以調用?request?組件的 yii\web\Request::get() 方法和 yii\web\Request::post() 方法。 他們分別返回?$_GET?和$_POST?的值。例如,

$request = Yii::$app->request;

$get = $request->get(); 
// 等價于: $get = $_GET;

$id = $request->get('id');   
// 等價于: $id = isset($_GET['id']) ? $_GET['id'] : null;

$id = $request->get('id', 1);   
// 等價于: $id = isset($_GET['id']) ? $_GET['id'] : 1;

$post = $request->post(); 
// 等價于: $post = $_POST;

$name = $request->post('name');   
// 等價于: $name = isset($_POST['name']) ? $_POST['name'] : null;

$name = $request->post('name', '');   
// 等價于: $name = isset($_POST['name']) ? $_POST['name'] : '';

信息:建議你像上面那樣通過?request?組件來獲取請求參數,而不是 直接訪問?$_GET?和?$_POST。 這使你更容易編寫測試用例,因為你可以偽造數據來創(chuàng)建一個模擬請求組件。

當實現?RESTful APIs?接口的時候,你經常需要獲取通過PUT, PATCH或者其他的?request methods?請求方法提交上來的參數。你可以通過調用 yii\web\Request::getBodyParam() 方法來獲取這些參數。例如,

$request = Yii::$app->request;

// 返回所有參數$params = $request->bodyParams;

// 返回參數 "id"$param = $request->getBodyParam('id');

信息:不同于?GET?參數,POST,PUTPATCH?等等這些提交上來的參數是在請求體中被發(fā)送的。 當你通過上面介紹的方法訪問這些參數的時候,request?組件會解析這些參數。 你可以通過配置 yii\web\Request::parsers 屬性來自定義怎樣解析這些參數。

請求方法

你可以通過?Yii::$app->request->method?表達式來獲取當前請求使用的HTTP方法。 這里還提供了一整套布爾屬性用于檢測當前請求是某種類型。 例如,

$request = Yii::$app->request;

if ($request->isAjax) {  }
if ($request->isGet)  {  }
if ($request->isPost) {  }
if ($request->isPut)  {  }

請求URLs

request?組件提供了許多方式來檢測當前請求的URL。

假設被請求的URL是?http://example.com/admin/index.php/product?id=100, 你可以像下面描述的那樣獲取URL的各個部分:

  • yii\web\Request::url:返回?/admin/index.php/product?id=100, 此URL不包括host info部分。
  • yii\web\Request::absoluteUrl:返回?http://example.com/admin/index.php/product?id=100, 包含host infode的整個URL。
  • yii\web\Request::hostInfo:返回?http://example.com, 只有host info部分。
  • yii\web\Request::pathInfo:返回?/product, 這個是入口腳本之后,問號之前(查詢字符串)的部分。
  • yii\web\Request::queryString:返回?id=100,問號之后的部分。
  • yii\web\Request::baseUrl:返回?/admin, host info之后, 入口腳本之前的部分。
  • yii\web\Request::scriptUrl:返回?/admin/index.php, 沒有path info和查詢字符串部分。
  • yii\web\Request::serverName:返回?example.com, URL中的host name。
  • yii\web\Request::serverPort:返回 80, 這是web服務中使用的端口。

HTTP頭

你可以通過 yii\web\Request::headers 屬性返回的 yii\web\HeaderCollection 獲取HTTP頭信息。 例如,

// $headers 是一個 yii\web\HeaderCollection 對象$headers = Yii::$app->request->headers;

// 返回 Accept header 值$accept = $headers->get('Accept');

if ($headers->has('User-Agent')) {  }

請求組件也提供了支持快速訪問常用頭的方法,包括:

  • yii\web\Request::userAgent:返回?User-Agent?頭。
  • yii\web\Request::contentType:返回?Content-Type?頭的值,?Content-Type?是請求體中MIME類型數據。
  • yii\web\Request::acceptableContentTypes:返回用戶可接受的內容MIME類型。 返回的類型是按照他們的質量得分來排序的。得分最高的類型將被最先返回。
  • yii\web\Request::acceptableLanguages:返回用戶可接受的語言。 返回的語言是按照他們的偏好層次來排序的。第一個參數代表最優(yōu)先的語言。

假如你的應用支持多語言,并且你想在終端用戶最喜歡的語言中顯示頁面,那么你可以使用語言協(xié)商方法 yii\web\Request::getPreferredLanguage()。 這個方法通過 yii\web\Request::acceptableLanguages 在你的應用中所支持的語言列表里進行比較篩選,返回最適合的語言。

提示:你也可以使用 yii\filters\ContentNegotiator 過濾器進行動態(tài)確定哪些內容類型和語言應該在響應中使用。 這個過濾器實現了上面介紹的內容協(xié)商的屬性和方法。

客戶端信息

你可以通過 yii\web\Request::userHost 和 yii\web\Request::userIP 分別獲取host name和客戶機的IP地址, 例如,

$userHost?=?Yii::$app->request->userHost;
$userIP?=?Yii::$app->request->userIP;
上一篇: 下一篇: