




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Laravel框架基礎(chǔ)
視圖引入
Laravel中的視圖是客戶端與服務(wù)器交換信息的界面,那它們之間是如何進(jìn)行交互呢?創(chuàng)建視圖向視圖傳遞數(shù)據(jù)流程控制語句表單安全及CSRF防御模板繼承視圖Web應(yīng)用開發(fā),需要大量展示性的界面,這些展示性的界面,或者用來收集客戶端輸入的信息,或者用來將服務(wù)器端的信息展現(xiàn)到客戶端。Laravel框架把這些展示性的界面定義為視圖,Laravel框架的視圖默認(rèn)使用Blade模板。視圖文件保存在Laravel框架的resources\views目錄中,實際應(yīng)用時,一般會根據(jù)需要在這個目錄下創(chuàng)建子目錄,將不同模塊的視圖放在不同的子目錄中。視圖文件的文件名一般小寫,后綴為“.blade.php”或“.php”,前者表示使用Blade模板引擎,后者表示不使用模板引擎。一、創(chuàng)建視圖視圖創(chuàng)建視圖文件01視圖文件可以通過手工進(jìn)行創(chuàng)建,也可以直接復(fù)制現(xiàn)成的文件模板進(jìn)行修改。視圖文件都需要保存在resources\views目錄中、或者該目錄的子目錄中,最后再把這些視圖文件的后綴更改為“.blade.php”。一、創(chuàng)建視圖視圖加載視圖文件02Laravel框架使用view()函數(shù)加載視圖文件,其語法格式為:
returnview('視圖名稱');view()函數(shù)的參數(shù)表示視圖文件的名稱,不需要傳入文件擴(kuò)展名。視圖名稱的前面還可以添加路徑。例如,將視圖文件index.blade.php保存在resources\views\admin目錄中,則加載該視圖文件的代碼如下:returnview('admin/index');
或returnview('admin.index');操作案例示例1創(chuàng)建視圖文件resources\views\admin\demo.blade.php,并注冊路由加載該視圖文件。在resources\views目錄下創(chuàng)建子目錄admin,再在resources\views\admin目錄下創(chuàng)建demo.blade.php文件,具體代碼如下所示:<!DOCTYPEhtml><html><head></head><body>
……</body></html>操作案例示例1創(chuàng)建視圖文件resources\views\admin\demo.blade.php,并注冊路由加載該視圖文件。打開routes\web.php文件,添加如下代碼:Route::get('/admin/demo','UserController@demo');打開app\Http\Controllers\UserController.php文件,在類中定義方法demo(),代碼如下所示:publicfunctiondemo(){returnview('admin/demo');}操作案例示例1創(chuàng)建視圖文件resources\views\admin\demo.blade.php,并注冊路由加載該視圖文件。瀏覽器地址欄中輸入:。二、向視圖傳遞數(shù)據(jù)視圖Laravel框架的視圖,作為客戶端與服務(wù)器交換信息的界面,常常需要在控制器中加載視圖時,同時向視圖傳入數(shù)據(jù)。Laravel框架可以使用view()函數(shù)或with()函數(shù)向視圖傳遞數(shù)據(jù)。二、向視圖傳遞數(shù)據(jù)視圖通過view()函數(shù)的第2個參數(shù)傳遞數(shù)據(jù)01向視圖傳遞數(shù)據(jù)可以通過view()函數(shù)的第2個參數(shù)來實現(xiàn)。其語法格式為:
returnview('視圖名稱',[數(shù)組]);二、向視圖傳遞數(shù)據(jù)視圖通過with()函數(shù)傳遞數(shù)據(jù)02向視圖傳遞數(shù)據(jù)還可以通過with()函數(shù)來實現(xiàn)。其語法格式為:
returnview('視圖名稱')->with(數(shù)組);或:
returnview('視圖名稱')->with(名稱,值)->with(名稱,值)…二、向視圖傳遞數(shù)據(jù)視圖compact()函數(shù)03使用compact()函數(shù)可以用來將多個變量打包成一個數(shù)組。其參數(shù)表示要打包的變量名,參數(shù)的個數(shù)不固定,返回的是打包后的數(shù)組。例如:
$welcome='Jack';
$arrUser=['username'=>'張三','sex'=>'男'];
$data=compact('welcome','arrUser');
returnview('admin/demo',$data);二、向視圖傳遞數(shù)據(jù)視圖在視圖中顯示傳入的數(shù)據(jù)04傳入到Blade視圖的數(shù)據(jù)變量,可以通過“{{變量名}}”來輸出。例如:
{{$welcome}}Blade模板引擎在輸出字符串時,會自動進(jìn)行HTML特殊字符的轉(zhuǎn)義。如果想禁止Blade的自動轉(zhuǎn)義,可以通過“{!!變量名!!}”來輸出。例如:
{!!$welcome!!}二、向視圖傳遞數(shù)據(jù)視圖在視圖中通過函數(shù)對數(shù)據(jù)進(jìn)行處理05在blade模板中,可以在雙花括號“{{}}”中直接使用函數(shù)。例如:
{{date('Y-m-dH:i:s',time())}}操作案例示例2修改視圖文件resources\views\admin\demo.blade.php,在視圖中顯示傳入的數(shù)據(jù)。打開app\Http\Controllers\UserController.php文件,修改類的方法demo(),代碼如下所示:publicfunctiondemo(){$welcome='Jack';returnview('admin/demo')->with('welcome',$welcome);}操作案例示例2修改視圖文件resources\views\admin\demo.blade.php,在視圖中顯示傳入的數(shù)據(jù)。打開resources\views\admin\demo.blade.php文件,修改<h4>標(biāo)簽中的代碼,如下所示:……<h4>你好,{{$welcome}},歡迎登錄!</h4>……操作案例示例2修改視圖文件resources\views\admin\demo.blade.php,在視圖中顯示傳入的數(shù)據(jù)。瀏覽器地址欄中輸入:。操作案例示例2修改視圖文件resources\views\admin\demo.blade.php,在視圖中顯示傳入的數(shù)據(jù)。再次打開app\Http\Controllers\UserController.php文件,修改類的方法demo(),代碼如下所示:publicfunctiondemo(){$welcome='<ahref="#">Jack</a>';returnview('admin/demo')->with('welcome',$welcome);}操作案例示例2修改視圖文件resources\views\admin\demo.blade.php,在視圖中顯示傳入的數(shù)據(jù)。瀏覽器地址欄中輸入:。操作案例示例2修改視圖文件resources\views\admin\demo.blade.php,在視圖中顯示傳入的數(shù)據(jù)。再次打開resources\views\admin\demo.blade.php文件,修改<h4>標(biāo)簽中的代碼,如下所示:……<h4>你好,{!!$welcome!!},歡迎登錄!</h4>……操作案例示例2修改視圖文件resources\views\admin\demo.blade.php,在視圖中顯示傳入的數(shù)據(jù)。瀏覽器地址欄中輸入:。三、流程控制語句視圖使用Blade模板語法的視圖非常簡潔,它除了可以直接輸出轉(zhuǎn)義與非轉(zhuǎn)義變量、直接輸出函數(shù)外,還可以用簡潔的方式書寫流程控制語句,在視圖文件中進(jìn)行判斷和循環(huán)操作。Blade模板語法的流程控制語句主要有:@if、@foreach、@for、@while語句。三、流程控制語句視圖判斷操作:@if語句01在視圖文件中,可以使用“@if”語句進(jìn)行判斷操作,類似于PHP中的if語句,其語法格式為:@if(條件表達(dá)式1)
語句塊1;@elseif(條件表達(dá)式2)
語句塊2;…@else
語句塊n;@endif操作案例示例3修改視圖文件resources\views\admin\demo.blade.php,在視圖中根據(jù)傳入的數(shù)據(jù)情況顯示不同的內(nèi)容。打開resources\views\admin\demo.blade.php文件,修改<h4>標(biāo)簽中的代碼,如下所示:……<h4>@if(isset($welcome))你好,{!!$welcome!!},歡迎登錄!@else未登錄@endif</h4>……操作案例示例3修改視圖文件resources\views\admin\demo.blade.php,在視圖中根據(jù)傳入的數(shù)據(jù)情況顯示不同的內(nèi)容。瀏覽器地址欄中輸入:。操作案例示例3修改視圖文件resources\views\admin\demo.blade.php,在視圖中根據(jù)傳入的數(shù)據(jù)情況顯示不同的內(nèi)容。打開app\Http\Controllers\UserController.php文件,修改類的方法demo(),代碼如下所示:publicfunctiondemo(){returnview('admin/demo');}操作案例示例3修改視圖文件resources\views\admin\demo.blade.php,在視圖中根據(jù)傳入的數(shù)據(jù)情況顯示不同的內(nèi)容。瀏覽器地址欄中輸入:。三、流程控制語句視圖循環(huán)操作:@foreach語句02在視圖文件中,還可以使用“@foreach”語句進(jìn)行循環(huán)操作,類似于PHP中的foreach語句,其語法格式為:@foreach($variableas$key=>$value)//循環(huán)體@endforeach三、流程控制語句視圖循環(huán)操作:@foreach語句02@foreach與常規(guī)的foreach相比,其功能更加強(qiáng)大,因為它在每一個@foreach循環(huán)體中內(nèi)置了一個$loop變量。$loop變量是一個stdClass實例,提供了一系列當(dāng)前循環(huán)的信息。操作案例示例4創(chuàng)建視圖文件resources\views\admin\userList.blade.php,以表格的形式顯示用戶數(shù)據(jù)。在resources\views\admin目錄下創(chuàng)建userList.blade.php文件,具體代碼如下所示:<!DOCTYPEhtml><html><head></head><body>
……</body></html>操作案例示例4創(chuàng)建視圖文件resources\views\admin\userList.blade.php,以表格的形式顯示用戶數(shù)據(jù)。打開routes\web.php文件,添加如下代碼:Route::get('/admin/userList','UserController@userList');操作案例示例4創(chuàng)建視圖文件resources\views\admin\userList.blade.php,以表格的形式顯示用戶數(shù)據(jù)。打開app\Http\Controllers\UserController.php文件,在類中定義方法userList(),代碼如下所示:publicfunctionuserList(){$data=[['username'=>'張三','password'=>'123456','sex'=>'男'],
['username'=>'李四','password'=>'123456','sex'=>'男'],
['username'=>'王二','password'=>'123456','sex'=>'男']];returnview('admin/userList')->with('data',$data);}操作案例示例4創(chuàng)建視圖文件resources\views\admin\userList.blade.php,以表格的形式顯示用戶數(shù)據(jù)。再次打開resources\views\admin\userList.blade.php文件,在<tbody>標(biāo)簽中添加如下代碼:<tbody>@foreach($dataas$row)<tr><td>{{$loop->iteration}}</td><td>{{$row['username']}}</td><td>{{$row['password']}}</td><td>{{$row['sex']}}</td></tr>@endforeach</tbody>操作案例示例4創(chuàng)建視圖文件resources\views\admin\userList.blade.php,以表格的形式顯示用戶數(shù)據(jù)。瀏覽器地址欄中輸入:。四、表單安全及CSRF防御視圖什么是CSRF攻擊01CSRF是跨站點請求偽造(CrossSiteRequestForgery)的縮寫,它是通過偽造成合法用戶發(fā)起惡意請求,比如以合法用戶的名義發(fā)送郵件、發(fā)送消息,來進(jìn)行盜取賬號、添加系統(tǒng)管理員,甚至購買商品、進(jìn)行銀行轉(zhuǎn)賬等惡意攻擊行為。CSRF是一種網(wǎng)絡(luò)漏洞,是互聯(lián)網(wǎng)中常見的一種攻擊,一旦發(fā)生,可能會造成泄露個人隱私、危及財產(chǎn)安全等嚴(yán)重后果。四、表單安全及CSRF防御視圖Laravel框架的CSRF防御02Laravel框架默認(rèn)會對以POST方式發(fā)送過來的請求進(jìn)行令牌驗證,從而防御CSRF攻擊。在以POST方式提交表單時,Laravel會自動驗證表單中是否含有CSRF令牌(Token),如果沒有令牌或者令牌無效,則該請求會被攔截,不會進(jìn)入到路由對應(yīng)的控制器的方法中。在視圖文件中編寫表單時,可以通過模板語法{{csrf_field()}}或{{csrf_token()}}來獲取令牌,將令牌放入表單中,隨表單一起提交,這樣就可以通過CSRF驗證。如果表單沒有令牌或者令牌有誤,則請求會被Laravel攔截。四、表單安全及CSRF防御視圖Laravel框架的CSRF防御02{{csrf_field()}}用來獲取一個自動填入令牌值的隱藏域,類似于在頁面中自動添加了如下所示的一行代碼:
<inputtype="hidden"name="_token"value="自動填入的令牌值">而{{csrf_token()}}用來獲取一個令牌值,需要在頁面中手動添加一個隱藏域,然后把該令牌值寫入到它的value屬性中,具體代碼如下所示:
<inputtype="hidden"name="_token"value="{{csrf_token()}}">操作案例示例5創(chuàng)建視圖文件resources\views\admin\getArea.blade.php,設(shè)計一個表單,用來計算圓的面積。在resources\views\admin目錄下創(chuàng)建getArea.blade.php文件。打開routes\web.php文件,添加如下代碼:Route::get('/admin/getArea','UserController@getArea');打開app\Http\Controllers\UserController.php文件,在類中定義方法getArea(),代碼如下所示:publicfunctiongetArea(Request$request){returnview('admin/getArea');}操作案例示例5創(chuàng)建視圖文件resources\views\admin\getArea.blade.php,設(shè)計一個表單,用來計算圓的面積。瀏覽器地址欄中輸入:。操作案例示例5創(chuàng)建視圖文件resources\views\admin\getArea.blade.php,設(shè)計一個表單,用來計算圓的面積。再次打開routes\web.php文件,添加如下代碼:Route::post('/admin/getArea','UserController@getArea');再次打開app\Http\Controllers\UserController.php文件,修改類的方法getArea()。再次打開resources\views\admin\getArea.blade.php文件,修改<form>標(biāo)簽中的代碼。操作案例示例5創(chuàng)建視圖文件resources\views\admin\getArea.blade.php,設(shè)計一個表單,用來計算圓的面積。瀏覽器地址欄中輸入:,在顯示的頁面中,輸入半徑為“6.5”,然后點擊“計算”按鈕。操作案例示例5創(chuàng)建視圖文件resources\views\admin\getArea.blade.php,設(shè)計一個表單,用來計算圓的面積。再次打開resources\views\admin\getArea.blade.php文件,在<form>標(biāo)簽中添加一行“{{csrf_field()}}”的代碼,如下所示:<formaction="{{url('/admin/getArea')}}"method="post">……{{csrf_field()}}</form>操作案例示例5創(chuàng)建視圖文件resources\views\admin\getArea.blade.php,設(shè)計一個表單,用來計算圓的面積。瀏覽器地址欄中輸入:,在顯示的頁面中,再次輸入半徑為“6.5”,然后點擊“計算”按鈕。五、模板繼承視圖用于定義主布局頁面的指令01@yield指令:可以用來在父頁面中定義一個區(qū)塊,其語法格式如下:
@yield('區(qū)塊名稱',[默認(rèn)內(nèi)容])@section指令:也是可以用來在父頁面中定義一個區(qū)塊,其語法格式如下:
@section('區(qū)塊名稱')五、模板繼承視圖用于定義子頁面擴(kuò)展主布局
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 包裝員考試試題及答案
- 辦公產(chǎn)品面試題庫及答案
- 湖北省新八校協(xié)作體2024-2025學(xué)年高三5月聯(lián)考語文試題
- 小學(xué)籃球聯(lián)賽的組織與策劃計劃
- 醫(yī)療器械研發(fā)階段風(fēng)險管理計劃
- 安卓面試題庫及答案
- 安全考試試題答案及解析
- 反擔(dān)保合同經(jīng)典版
- 九年級化學(xué)實驗教學(xué)探究計劃
- 安全文明駕駛教育app考試試題及答案
- 中原農(nóng)業(yè)保險招聘題
- 2025八省適應(yīng)性考試語文的3道作文題深度解析和寫作指導(dǎo)(真題+審題立意+標(biāo)題+范文)【技法精研】高考語文議論文寫作
- 輸血科生物安全培訓(xùn)課件
- 100以內(nèi)加法減法口算1000題知識練習(xí)打印
- 2025年湖南長沙穗城軌道交通限公司社會招聘261人高頻重點模擬試卷提升(共500題附帶答案詳解)
- 應(yīng)急藥品知識培訓(xùn)課件
- 差分進(jìn)化算法研究
- 2025年湖北省武漢城市職業(yè)學(xué)院面向社會招聘人事代理人員27人歷年高頻重點提升(共500題)附帶答案詳解
- 國家開放大學(xué)《經(jīng)濟(jì)學(xué)(本)》形考任務(wù)1-6答案
- 職業(yè)教育與成人教育科2024年工作總結(jié)
- T-CNAS 12─2020 成人經(jīng)口氣管插管機(jī)械通氣患者口腔護(hù)理
評論
0/150
提交評論