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

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

路由

路由

當入口腳本在調(diào)用 yii\web\Application::run() 方法時,它進行的第一個操作就是解析輸入的請求,然后實例化對應(yīng)的控制器操作處理這個請求。該過程就被稱為引導路由(routing)。(譯注:中文里既是動詞也是名詞)

解析路由

路由引導的第一步,是把傳入請求解析為一個路由。如我們在?控制器(Controllers)?章節(jié)中所描述的那樣,路由是一個用于定位控制器操作的地址。這個過程通過?request?應(yīng)用組件的 yii\web\Request::resolve() 方法實現(xiàn),該方法會調(diào)用?URL 管理器?進行實質(zhì)上的請求解析工作。

默認情況下,傳入請求會包含一個名為?r?的?GET?參數(shù),它的值即被視為路由。但是如果啟用 yii\web\UrlManager::enablePrettyUrl,那么在確定請求的路由時,就會進行更多處理。具體的細節(jié)請參考?URL 的解析與生成?章節(jié)。

假使某路由最終實在無法被確定,那么?request?組件會拋出 yii\web\NotFoundHttpException 異常(譯注:大名鼎鼎的 404)。

缺省路由

如果傳入請求并沒有提供一個具體的路由,(一般這種情況多為于對首頁的請求)此時就會啟用由 yii\web\Application::defaultRoute 屬性所指定的缺省路由。該屬性的默認值為?site/index,它指向?site?控制器的?index?操作。你可以像這樣在應(yīng)用配置中調(diào)整該屬性的值:

return [
    // ...
    'defaultRoute' => 'main/index',
];

catchAll?路由(全攔截路由)

有時候,你會想要將你的 Web 應(yīng)用臨時調(diào)整到維護模式,所有的請求下都會顯示相同的信息頁。當然,要實現(xiàn)這一點有很多種方法。這里面最簡單快捷的方法就是在應(yīng)用配置中設(shè)置下 yii\web\Application::catchAll 屬性:

return [
    // ...
    'catchAll' => ['site/offline'],
];

catchAll?屬性需要傳入一個數(shù)組做參數(shù),該數(shù)組的第一個元素為路由,剩下的元素會(以名值對的形式)指定綁定于該操作的各個參數(shù)。

當設(shè)置了?catchAll?屬性時,它會替換掉所有從輸入的請求中解析出來的路由。如果是上文的這種設(shè)置,用于處理所有傳入請求的操作都會是相同的?site/offline。

創(chuàng)建操作

一旦請求路由被確定了,緊接著的步驟就是創(chuàng)建一個“操作(action)”對象,用以響應(yīng)該路由。

路由可以用里面的斜杠分割成多個組成片段,舉個栗子,site/index?可以分解為?site?和?index?兩部分。每個片段都是指向某一模塊(Module)、控制器(Controller)或操作(action)的 ID。

從路由的首個片段開始,應(yīng)用會經(jīng)過以下流程依次創(chuàng)建模塊(如果有),控制器,以及操作:

  1. 設(shè)置應(yīng)用主體為當前模塊。
  2. 檢查當前模塊的 yii\base\Module::controllerMap 是否包含當前 ID。如果是,會根據(jù)該表中的配置創(chuàng)建一個控制器對象,然后跳到步驟五執(zhí)行該路由的后續(xù)片段。
  3. 檢查該 ID 是否指向當前模塊中 yii\base\Module::modules 屬性里的模塊列表中的一個模塊。如果是,會根據(jù)該模塊表中的配置創(chuàng)建一個模塊對象,然后會以新創(chuàng)建的模塊為環(huán)境,跳回步驟二解析下一段路由。
  4. 將該 ID 視為控制器 ID,并創(chuàng)建控制器對象。用下個步驟解析路由里剩下的片段。
  5. 控制器會在他的 yii\base\Controller::actions()里搜索當前 ID。如果找得到,它會根據(jù)該映射表中的配置創(chuàng)建一個操作對象;反之,控制器則會嘗試創(chuàng)建一個與該 ID 相對應(yīng),由某個 action 方法所定義的行內(nèi)操作(inline action)。
在上面的步驟里,如果有任何錯誤發(fā)生,都會拋出 yii\web\NotFoundHttpException,指出路由引導的過程失敗了。
Vorheriger Artikel: N?chster Artikel: