PHP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)項(xiàng)目教程課件 任務(wù)14 Laravel中的表單驗(yàn)證、數(shù)據(jù)庫(kù)操作_第1頁(yè)
PHP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)項(xiàng)目教程課件 任務(wù)14 Laravel中的表單驗(yàn)證、數(shù)據(jù)庫(kù)操作_第2頁(yè)
PHP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)項(xiàng)目教程課件 任務(wù)14 Laravel中的表單驗(yàn)證、數(shù)據(jù)庫(kù)操作_第3頁(yè)
PHP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)項(xiàng)目教程課件 任務(wù)14 Laravel中的表單驗(yàn)證、數(shù)據(jù)庫(kù)操作_第4頁(yè)
PHP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)項(xiàng)目教程課件 任務(wù)14 Laravel中的表單驗(yàn)證、數(shù)據(jù)庫(kù)操作_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PHP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)項(xiàng)目教程任務(wù)14Laravel中的表單驗(yàn)證、數(shù)據(jù)庫(kù)操作子任務(wù)14.1Laravel中表單數(shù)據(jù)的后端驗(yàn)證方法14.1.1理解Laravel中的驗(yàn)證類Validator

Laravel提供了一個(gè)驗(yàn)證類Validator,其基本使用方法是:1. Validator::make('需要驗(yàn)證的表單數(shù)據(jù)','驗(yàn)證規(guī)則','錯(cuò)誤提示信息');

其中可用的驗(yàn)證規(guī)則請(qǐng)參見(jiàn)官方文檔。下面列出一些常見(jiàn)的典型驗(yàn)證規(guī)則。(1)accepted:表示待驗(yàn)證字段必須是

“yes”

、“on”

、“1”

或“true”。這對(duì)于驗(yàn)證“服務(wù)條款”或類似字段很有用。(2)alpha:表示待驗(yàn)證字段只能由字母組成。(3)alpha_dash:表示待驗(yàn)證字段可包含字母、數(shù)字、短橫線(-)和下畫線(_)。(4)alpha_num:表示待驗(yàn)證字段只能由字母和數(shù)字組成。

(5)digits:value:驗(yàn)證的字段必須為numeric類型,并且必須具有確切長(zhǎng)度值value。(6)digits_between:min,max:驗(yàn)證的字段必須為numeric類型,并且長(zhǎng)度必須在給定的min和max之間。(7)email:驗(yàn)證的字段必須符合

e-mail

地址格式。(8)required:驗(yàn)證的字段必須存在于輸入數(shù)據(jù)中,即不為空。如果滿足以下條件之一,則字段被視為“空”。①值為null。②值為空字符串。③值為空數(shù)組或空Countable對(duì)象。④值為無(wú)路徑的上傳文件。

除了使用系統(tǒng)直接創(chuàng)建好的這些驗(yàn)證規(guī)則以外,還可以使用自定義的正則表示式來(lái)創(chuàng)建更為復(fù)雜的驗(yàn)證規(guī)則。14.1.2使用Laravel驗(yàn)證類Validator完成表單數(shù)據(jù)驗(yàn)證14.1.3在前端頁(yè)面中顯示驗(yàn)證錯(cuò)誤提示信息

為了在前端頁(yè)面中顯示驗(yàn)證錯(cuò)誤提示信息,需要在視圖中添加相應(yīng)的代碼。小王同學(xué)研究Blade模板引擎語(yǔ)法后,在

login.blade.php文件的表單中輸入以下代碼。1. {{var_dump($errors)}}

2. @if($errors->any())

3.

@foreach($errors->all()

as

$element)

4.

<li>{{$element}}</li>

5.

@endforeach

6. @endif

為了測(cè)試表單數(shù)據(jù)的驗(yàn)證效果,可以暫時(shí)把login.blade.php文件中的前端數(shù)據(jù)驗(yàn)證功能關(guān)閉,只需在check()方法的第一行添加return即可。這樣設(shè)置后,可以不填寫任何內(nèi)容,直接單擊“提交”按鈕。此時(shí),由于每項(xiàng)數(shù)據(jù)都是空值,在后端進(jìn)行驗(yàn)證后,自然會(huì)出錯(cuò),因此系統(tǒng)會(huì)將這些錯(cuò)誤提示信息返回到前端文件中,如圖14.1.1所示。圖14.1.1

輸出$errors中的錯(cuò)誤提示信息

圖14.1.1所示的矩形框中顯示的3行內(nèi)容就是foreach遍歷出來(lái)的錯(cuò)誤提示信息。

圖14.1.1所示為具體的錯(cuò)誤提示信息,這些信息只能便于我們理解其內(nèi)容。在展示具體頁(yè)面時(shí),還需要將相關(guān)的信息在表單中顯示出來(lái),也就是需要把這些錯(cuò)誤提示信息和文本框進(jìn)行定位,將錯(cuò)誤提示信息和每一個(gè)表單域相對(duì)應(yīng)。要實(shí)現(xiàn)這個(gè)功能,可以在表單域的后面添加一個(gè)顯示錯(cuò)誤提示信息的DOM節(jié)點(diǎn)。

當(dāng)故意在用戶名、密碼、驗(yàn)證碼文本框中輸入不能通過(guò)驗(yàn)證的內(nèi)容時(shí),單擊“提交”按鈕后,會(huì)在表單中顯示每一項(xiàng)的錯(cuò)誤提示信息,如圖14.1.2所示。圖14.1.2

在表單中顯示驗(yàn)證錯(cuò)誤提示信息子任務(wù)14.2Laravel中數(shù)據(jù)庫(kù)的使用(用戶登錄)14.2.1使用Laravel中的模型

MVC模式中的Model就是一個(gè)快速操作數(shù)據(jù)庫(kù)(準(zhǔn)確地說(shuō)是對(duì)應(yīng)的數(shù)據(jù)表,一個(gè)模型對(duì)應(yīng)一個(gè)數(shù)據(jù)表)的方法,可以利用模型加上一些自己想執(zhí)行的操作對(duì)數(shù)據(jù)表進(jìn)行快速操作,比如,查找特定的記錄,實(shí)現(xiàn)數(shù)據(jù)的增、刪、改等。模型是Laravel框架重要的基礎(chǔ)之一,EloquentORM組件提供了模型定義、CRUD(Create、Read、Update、Delete,增加、讀取、更新、刪除)、軟刪除、修改器等API方法。

模型封裝的好處是映射了底層數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)、關(guān)聯(lián)關(guān)系,可提供給邏輯代碼調(diào)用,并進(jìn)行了一些優(yōu)化,有時(shí)比直接調(diào)用數(shù)據(jù)庫(kù)進(jìn)行SQL語(yǔ)句查詢更加合理。模型事件機(jī)制提取出事件處理、事件監(jiān)聽(tīng),使程序邏輯解耦、層次更加清晰。

了解模型的相關(guān)內(nèi)容后,小王同學(xué)參照文檔的要求進(jìn)行編碼。(1)配置數(shù)據(jù)庫(kù)相關(guān)信息。打開(kāi)根目錄下的“.env”文件,找到其中的數(shù)據(jù)庫(kù)配置部分,按照實(shí)際情況進(jìn)行配置。(2)在終端中執(zhí)行以下命令創(chuàng)建模型:“php

artisan

make:model

UserModel”。

(3)輸入代碼修改模型文件。

在模型文件中,通過(guò)$table變量配置數(shù)據(jù)表,即可將UserModel模型映射到userinfo數(shù)據(jù)表。通過(guò)$primaryKey配置數(shù)據(jù)表的主鍵字段。因?yàn)樗械腅loquent模型會(huì)預(yù)設(shè)防止批量賦值,所以需要在Model中設(shè)置fillable和guarded屬性。如果需要對(duì)任意字段進(jìn)行設(shè)置,則可以使用“*”來(lái)代替。Laravel的create方法為字段批量賦值,save方法為字段逐個(gè)手動(dòng)賦值。需要注意的是,fillable與guarded只限制了create方法,而不會(huì)限制save方法。create方法通常使用request中的所有請(qǐng)求參數(shù)來(lái)創(chuàng)建對(duì)象,而save方法則是為字段逐個(gè)手動(dòng)賦值,所以create方法有可能會(huì)惡意加入不應(yīng)該插入的字段。14.2.2在Laravel中完成用戶登錄

創(chuàng)建好模型后,接下來(lái)可以修改控制器,然后從數(shù)據(jù)表中查詢用戶名和密碼是否正確。(1)修改控制器。(2)修改IDE中代碼提示的bug。(3)修改導(dǎo)航內(nèi)容。

圖14.2.1所示為測(cè)試的登錄后的結(jié)果。圖14.2.1

用戶登錄后的首頁(yè)(4)完善“注銷登錄”。頁(yè)面中的“注銷登錄”鏈接也需要同步修改完善。先修改“注銷登錄”鏈接。(5)創(chuàng)建控制器。在Login控制器中添加logout()方法,即使用flush()方法清空Session。(6)創(chuàng)建路由。在web.php中創(chuàng)建路由。子任務(wù)14.3后臺(tái)管理頁(yè)面的制作14.3.1使用Laravel的中間件

小王同學(xué)前面在修改nav.blade.php文件時(shí),已經(jīng)完成了后臺(tái)管理頁(yè)面的鏈接,并創(chuàng)建了跳轉(zhuǎn)路由?,F(xiàn)在需要按照前面的設(shè)置,來(lái)創(chuàng)建后臺(tái)管理頁(yè)面。(1)將原來(lái)系統(tǒng)中的admin.php文件復(fù)制到resources/views/admin下(需要新建文件夾admin),并更名為index.blade.php。(2)打開(kāi)文件,將頭部判斷權(quán)限的包含文件和其他所有的PHP代碼都刪除,然后包含nav模板,并進(jìn)行測(cè)試,以確保這個(gè)頁(yè)面能正確顯示出來(lái)。(3)中間件的創(chuàng)建方式和控制器、模型等的創(chuàng)建方式類似,可以在終端中輸入代碼并執(zhí)行來(lái)創(chuàng)建中間件。(4)修改中間件的內(nèi)容。(5)創(chuàng)建中間件后,中間件還不會(huì)起作用,還需要注冊(cè)中間件。(6)在路由中使用中間件。由于現(xiàn)在進(jìn)入管理員頁(yè)面時(shí)需要判斷是否處于管理員登錄狀態(tài),因此,需要修改“/admin/index”這個(gè)路由。14.3.2輸出后臺(tái)管理頁(yè)面數(shù)據(jù)(1)修改login控制器中登錄成功后的代碼。(2)在終端中創(chuàng)建控制器。(3)在新創(chuàng)建的控制器中創(chuàng)建一個(gè)index()方法。(4)創(chuàng)建路由。(5)輸出數(shù)據(jù)。在實(shí)現(xiàn)路由跳轉(zhuǎn)時(shí),有一個(gè)參數(shù)是$allUser,這是一個(gè)二維數(shù)組,里面包含所有的會(huì)員信息。在Blade模板引擎中有專門用于循環(huán)輸出數(shù)組數(shù)據(jù)的方法。輸入代碼修改admin.

blade.php文件。

“序號(hào)”欄使用的是“{{$loop->iteration}}”。$loop是Blade模板引擎提供的循環(huán)輸出變量的方法,相關(guān)的使用方法如表14.3.1所示。序號(hào)屬性描述1$loop->index當(dāng)前迭代的索引(從

0

開(kāi)始計(jì)數(shù))2$loop->iteration當(dāng)前循環(huán)迭代(從

1

開(kāi)始計(jì)數(shù))3$loop->remaining循環(huán)中剩余迭代的數(shù)量4$loop->count被迭代的數(shù)組元素的總數(shù)5$loop->first是否為循環(huán)的第一次迭代6$loop->last是否為循環(huán)的最后一次迭代7$loop->depth當(dāng)前迭代的嵌套深度級(jí)數(shù)8$loop->parent嵌套循環(huán)中,父循環(huán)的循環(huán)變量表14.3.1

Blade模板引擎中關(guān)于循環(huán)變量$loop的使用方法

此時(shí),使用管理員賬號(hào)重新登錄,可以看到在管理員頁(yè)面中輸出了所有會(huì)員的信息,如圖14.3.1所示。圖14.3.1

管理員頁(yè)面子任務(wù)14.4使用Laravel實(shí)現(xiàn)用戶注冊(cè)

完成用戶注冊(cè)功能時(shí),參照前面用戶登錄時(shí)的操作,可以很快完成相關(guān)內(nèi)容。(1)將原有的注冊(cè)頁(yè)面signup.php復(fù)制到“views/register”中,并更名為signup.blade.php。(2)刪除頭部的“session_start()”,刪除包含nav.php文件的代碼,并重新使用模板引擎包含nav.blade.php文件。(3)添加路由,以實(shí)現(xiàn)單擊導(dǎo)航欄中的“會(huì)員注冊(cè)”,自動(dòng)跳轉(zhuǎn)到會(huì)員注冊(cè)頁(yè)面。同時(shí),實(shí)現(xiàn)單擊“提交”按鈕,跳轉(zhuǎn)到后端注冊(cè)頁(yè)面,實(shí)現(xiàn)用戶注冊(cè)。(4)修改導(dǎo)航欄鏈接。打開(kāi)nav.blade.php文件,修改“會(huì)員注冊(cè)”鏈接。(5)創(chuàng)建注冊(cè)控制器。在終端中輸入以下命令。(6)添加表單提交的路由。在web.php文件中添加代碼。(7)修改前端注冊(cè)頁(yè)面。在action屬性中設(shè)置提交頁(yè)面,同時(shí),由于提交數(shù)據(jù)會(huì)用到POST方式,因此,需要在signup.blade.php中添加“@csrf”,以防止跨站攻擊。(8)在RegisterController控制器中添加一個(gè)方法postRegi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論