成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Laravel思維導(dǎo)圖之HTTP請求、響應(yīng)、表單驗證

lewif / 1934人閱讀

摘要:今天我來分享中層關(guān)于請求響應(yīng)與表單驗證的知識。手動創(chuàng)建驗證請求之前的內(nèi)容是直接使用的方法來實現(xiàn)表單驗證。下一步到這篇為止,我完成了入門指南核心概念層的路由中間件控制器請求響應(yīng)表單驗證的學(xué)習(xí)和整理。

今天我來分享 Laravel 中 HTTP 層關(guān)于請求、響應(yīng)與表單驗證的知識。

0x00 HTTP 請求

獲取請求

在控制器方法中使用 IlluminateHttpRequest 類型提示,
可以以依賴注入方式來獲取當(dāng)前 HTTP 請求的實例。

將路由參數(shù)置于其他依賴之后可以傳入路由參數(shù)。

Request 提供了內(nèi)置方法來便捷地做請求相關(guān)處理。

path 方法返回請求路徑信息。

is 方法驗證收到的請求路徑與指定規(guī)則是否匹配。

url 返回不帶有查詢字符串的 URL。

fullUrl 返回包含查詢字符串的完整 URL。

method 方法返回 HTTP 請求方式。

isMethod 方法驗證 HTTP 請求方式與指定規(guī)則是否匹配。

輸入數(shù)據(jù)的預(yù)處理與規(guī)范化

在 Laravel 的全局中間件中默認包含了 TrimStringsConvertEmptyStringsToNull 兩個中間件。這些中間件被列在 AppHttpKernel 類中。它們會自動處理所有請求中傳入的字符串字段,比如將空的字符串字段轉(zhuǎn)變成 null 值。想停用這些功能,則需要在 AppHttpKernel 類的 $middleware 屬性中移除這些中間件。

獲取輸入數(shù)據(jù)

Laravel 支持從 Request 中獲取常規(guī)數(shù)據(jù)、舊輸入數(shù)據(jù)、cookies。

獲取常規(guī)數(shù)據(jù)的方法有:

使用 all 方法以 數(shù)組 形式獲取到所有輸入數(shù)據(jù)。

input 方法獲取指定輸入值。

通過動態(tài)屬性獲取輸入數(shù)據(jù)。

通過 json 方法獲取 JSON 輸入信息。

通過 only/except 方法獲取部分輸入數(shù)據(jù)。

通過 has 方法確定是否有輸入值。

對于舊數(shù)據(jù),Laravel 允許你將本次的輸入數(shù)據(jù)保留到下一次請求發(fā)送前。
這個特性在表單驗證錯誤后重新填寫表單相當(dāng)有用。

文件資源

獲取上傳文件的相關(guān)方法:

file 方法獲取上傳的文件。

hasFile 方法確認上傳的文件是否存在。

isValid 方法驗證上傳的文件是否有效。

UploadedFile 這個類也包含了訪問文件完整路徑和擴展的方法。

path 方法獲取路徑。

extension 方法獲取擴展名。

此外,store 方法支持上傳文件儲存到本地磁盤或者云存儲上。

0x01 HTTP 響應(yīng)

所有路由和控制器都會返回一個響應(yīng)并返回給用戶的瀏覽器。

創(chuàng)建響應(yīng)

Laravel 支持的 HTTP 響應(yīng)類型包括字符串、數(shù)組、對象、附件頭信息、附加 Cookie 等。

重定向

重定向響應(yīng)是 IlluminateHttpRedirectResponse 類的實例,
并且包含用戶需要重定向至另一個 URL 所需的頭信息。

Laravel 支持:

通過全局 redirect 輔助函數(shù)實現(xiàn)重定向。

通過 back 輔助函數(shù)實現(xiàn)重定向至上級頁面。

重定向至命名路由,并根據(jù)需要攜帶普通或 Eloquent 模型參數(shù)。

通過 action 方法傳遞控制器和行為名稱作為參數(shù)來實現(xiàn)重定向至控制器行為。

重定向至一個新的 URL 的同時通常會 附加 Session 閃存數(shù)據(jù)。

其他響應(yīng)

使用全局輔助函數(shù) response 可以輕松的生成其他類型的響應(yīng)實例。

響應(yīng)宏

自定義可以在很多路由和控制器重復(fù)使用的響應(yīng),可以使用 Response Facade 實現(xiàn)的 macro 方法。

0x02 表單驗證機制詳解

Laravel 提供了多種不同的驗證方法來對應(yīng)用程序傳入的數(shù)據(jù)進行驗證。默認情況下,Laravel 的基類控制器使用 ValidatesRequests Trait,它提供了方便的方法使用各種強大的驗證規(guī)則來驗證傳入的 HTTP 請求數(shù)據(jù)。

快速上手實例

重點在于在控制器的方法中,添加驗證邏輯。

表單請求驗證

這部分與上面實例的差別在于為了滿足更復(fù)雜的驗證情境,我們需要創(chuàng)建一個表單請求。表單請求是一個自定義的請求類,里面包含著驗證邏輯。想要運行驗證規(guī)則,在控制器方法中利用類型提示傳入請求。

在自定義的表單請求類中可以實現(xiàn):

通過 rules 方法添加驗證規(guī)則。

通過 withValidator 方法在表單請求以后添加鉤子。

通過 authorize 方法授權(quán)表單請求。

重寫 AppHttpRequestsRequest 中的
formatErrors 方法來自定義錯誤格式。

重寫 messages 方法自定義錯誤消息。

手動創(chuàng)建驗證請求

之前的內(nèi)容是直接使用 ValidatesRequests Trait 的 validate 方法來實現(xiàn)表單驗證。此外,還可以手動創(chuàng)建一個 validator 實例并通過 Validator::make 方法在 Facade 生成一個新的 validator 實例來實現(xiàn)表單驗證。

處理錯誤消息

調(diào)用 Validator 實例的 errors 方法,會得到一個 IlluminateSupportMessageBag 的實例,可以對 MessageBag 進行各種處理,以滿足具體的需求。

常用的錯誤信息相關(guān)方法:

通過 first 方法查看特定字段的第一個錯誤消息。

通過 get 方法查看特定字段的所有錯誤消息。

通過 all 方法查看所有字段的所有錯誤消息。

通過 has 方法判斷特定字段是否含有錯誤消息。

自定義錯誤消息則主要通過傳遞三個參數(shù)到 Validator::make 方法來實現(xiàn)。

內(nèi)置可用的驗證規(guī)則

Laravel 內(nèi)置了大量可用的驗證規(guī)則。如下圖:

具體用法可以查看文檔:http://d.laravel-china.org/docs/5.4/validation#available-validation-rules

按條件添加規(guī)則

Laravel 還可以實現(xiàn)靈活的根據(jù)條件添加規(guī)則,如當(dāng)字段存在時才進行驗證,以及更多復(fù)雜的自定義驗證規(guī)則。

驗證數(shù)組

對于請求中的數(shù)組參數(shù),可以使用型號 * 字符獲取所有數(shù)組中的項。

自定義規(guī)則

除了 Laravel 內(nèi)置的驗證規(guī)則外,還可以根據(jù)需要自定義規(guī)則。在 服務(wù)提供者 中使用 Validator Facade 中的 extend 方法來注冊自定義的驗證規(guī)則。

0x03 下一步

到這篇為止,我完成了 Laravel 入門指南、核心概念、HTTP 層的路由、中間件、控制器、請求、響應(yīng)、表單驗證的學(xué)習(xí)和整理。這幾個部分已經(jīng)可以讓你實現(xiàn)簡單的面向前端的接口。

接下來我將對數(shù)據(jù)庫及 ORM 部分進行學(xué)習(xí)和整理。絕大多數(shù)應(yīng)用的數(shù)據(jù)都存儲在數(shù)據(jù)庫中,服務(wù)端的功能圍繞著數(shù)據(jù)庫中存儲的數(shù)據(jù)展開,從而構(gòu)建了強大的應(yīng)用。

0x04 寫在最后

對于知識的學(xué)習(xí),整理是非常關(guān)鍵的一環(huán),有助于加深理解。

對于 Laravel 的學(xué)習(xí)我將持續(xù)地以思維導(dǎo)圖的方式整理輸出,并首發(fā)在微信公眾號 up2048 上分享給需要的讀者。

由于思維導(dǎo)圖在導(dǎo)出成圖片的過程中會變得模糊,為了方便讀者,我也提供了思維導(dǎo)圖源文件的下載。讀者可根據(jù)需要,關(guān)注微信公眾號:up2048,并回復(fù)“腦圖”來免費獲取。

- EOF -

推薦閱讀

記一次 Laravel 應(yīng)用性能調(diào)優(yōu)經(jīng)歷

你開發(fā)的小程序慢到令人發(fā)指可能僅僅因為它

我心目中的網(wǎng)絡(luò)接口設(shè)計到底是怎樣的過程?

多平臺統(tǒng)一用戶系統(tǒng)設(shè)計

十五張思維導(dǎo)圖帶你快速學(xué)習(xí)PHP言語基礎(chǔ)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/25782.html

相關(guān)文章

  • Laravel思維導(dǎo)圖之Laravel HTTP路由、中間件、控制器

    摘要:又限于層的內(nèi)容太多,我在這篇中將整理路由中間件控制器部分內(nèi)容。前者定義頁面路由,默認應(yīng)用中間件組后者定義無狀態(tài)路由,會應(yīng)用中間件組。命名路由可以為指定路由或者控制器方法命名,也可以為已命名的路由生成。 showImg(https://segmentfault.com/img/remote/1460000010882838); 上圖列出了 Laravel HTTP 層的相關(guān)知識大綱。由于...

    linkin 評論0 收藏0
  • 記一次 Laravel 應(yīng)用性能調(diào)優(yōu)經(jīng)歷

    摘要:為了一探究竟,于是開啟了這次應(yīng)用性能調(diào)優(yōu)之旅。使用即時編譯器和都能輕輕松松的讓你的應(yīng)用程序在不用做任何修改的情況下,直接提高或者更高的性能。 這是一份事后的總結(jié)。在經(jīng)歷了調(diào)優(yōu)過程踩的很多坑之后,我們最終完善并實施了初步的性能測試方案,通過真實的測試數(shù)據(jù)歸納出了 Laravel 開發(fā)過程中的一些實踐技巧。 0x00 源起 最近有同事反饋 Laravel 寫的應(yīng)用程序響應(yīng)有點慢、20幾個并...

    warkiz 評論0 收藏0
  • Laravel思維導(dǎo)圖之Laravel入門指南

    摘要:本系列思維導(dǎo)圖整理自版本官方文檔。思維導(dǎo)圖導(dǎo)出為圖片時會導(dǎo)致其變模糊。需要高清的思維導(dǎo)圖源文件,請關(guān)注微信公眾號,并回復(fù)精進腦圖來獲取。今天我們就通過張思維導(dǎo)圖來快速看入門指南。這些文章都將首發(fā)在微信公眾號上。 showImg(https://segmentfault.com/img/remote/1460000010774258); 本系列思維導(dǎo)圖整理自 Laravel 5.4 版...

    vibiu 評論0 收藏0
  • Laravel思維導(dǎo)圖之Laravel核心概念

    摘要:的核心概念包括服務(wù)容器服務(wù)提供者門面契約。所有服務(wù)提供者都需要繼承類??梢詾榉?wù)提供者的方法設(shè)置類型提示。方法將在所有其他服務(wù)提供者均已注冊之后調(diào)用。同樣會整理成思維導(dǎo)圖的形式以方便記憶與回顧。 showImg(https://segmentfault.com/img/remote/1460000010771201); Laravel 的核心概念包括:服務(wù)容器、服務(wù)提供者、門面(Fac...

    wthee 評論0 收藏0
  • 【日常填坑】之a(chǎn)jax請求laravel的api接口

    摘要:合適和夠用是最完美的追求。比如從頁面去請求的資源。它允許瀏覽器向跨源服務(wù)器,發(fā)出請求,從而克服了只能同源使用的限制。定義在中的路由都是無狀態(tài)的,并且會應(yīng)用中間件組。 關(guān)于作者 程序開發(fā)人員,不拘泥于語言與技術(shù),目前主要從事PHP和前端開發(fā),使用Laravel和VueJs,App端使用Apicloud混合式開發(fā)。合適和夠用是最完美的追求。 個人網(wǎng)站:http://www.linganm...

    Arno 評論0 收藏0

發(fā)表評論

0條評論

lewif

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<