- blade模板簡介
在之前的laravel的了解過程中,知道怎么去使用laravel中的blade模板,同時也了解到在laravel中blade模板引擎功能非常強(qiáng)大,在這里不限制開發(fā)人員使用原聲php代碼,并且會把編譯后的php原生代碼生成緩存文件,方便在調(diào)試錯誤的時候,直接查看,當(dāng)然這些呢僅僅是它的一部分,laravel官方在應(yīng)用blade的模板中聲明了很多函數(shù),可以在blade模板中靈活的去應(yīng)用.laravel的視圖文件定義在resources/views
目錄下.
- 如何在方法中調(diào)用視圖文件
在laravel中調(diào)用視圖文件,可以在路由中去調(diào)用,也可以在方法中去調(diào)用,但是不論在哪里使用都離不開一個函數(shù)view
,laravel封裝好了這個函數(shù),可以飛鏟方便的去調(diào)用模板,比如:
在路由中調(diào)用一個add.blade.php
模板
Route::get('add',function(){
return view('add');//只需要調(diào)用名字,后綴不需要調(diào)用
});
- 在方法中去調(diào)用
也是同樣的使用方法,如
public function add(){
return view('add');
}
當(dāng)然,我們?nèi)绻鲆粋€完整的項(xiàng)目的話,使用的模板肯定很多,就不能全部放到views
目錄下.需要自定義的文件夾,方便去查看,比如,views/article/add.blade.php
public function add(){
return view('article.add');
}
- 模板賦值
在方法中如何把數(shù)據(jù)傳值到模板中,注意模板賦值要以一維數(shù)組的形式去傳遞如:
public function add(){
$data = ['title'=>'laravel','content'=>'blade模板'];
//直接在view函數(shù)第二個參數(shù)傳遞即可
return view('add',['data'=>$data]);
}
模板繼承
何為模板繼承,比如在tp框架中,有模板包含.可以利益include函數(shù)把一些模板相同的頭尾部給引用過來,這樣可以提高一些開發(fā)效率,但是模板繼承比模板包含更加的實(shí)用,比如兩個模板,雖然中間的內(nèi)容不同,但是頭尾部和中間的模板布局相同,就直接可以把共同的布局給繼承過來.如定義頁面布局模板
//名字 為 parent.blade.php
<html>
<head>
<title>App Name - @yield('title')</title>
</head>
<body>
@section('sidebar')
This is the master sidebar.
@show
<div class="container">
@yield('content')
</div>
</body>
</html>
如上所見摩泪,這個文件中包含了通常見到的 HTML 標(biāo)簽蜻势。不過泪掀,請注意一下 @section
和 @yield
指令譬巫。@section
指令正像其名字所暗示的一樣是用來定義一個視圖片斷(section)
的亿柑;@yield
指令是用來展示某個指定 section 所代表的內(nèi)容的匹涮。
上面這個布局呢,大家都可以明白,這個布局相當(dāng)于一個公共的布局,那下面在定義一個頁面模板作為繼承使用,如
//名字 為son.blade.php與parent.blade.php 為同目錄
//首先繼承模板
@extends('parent')
// 繼承指定的title
@section('title', 'Blade')
@section('sidebar')
@@parent
<p>blade模板使用</p>
@endsection
@section('content')
<p>This is my body content.</p>
@endsection
然后在方法中
public function test(){
return view('son');
}
在方法中直接調(diào)用son.blade.php
就行,如果調(diào)用成功是直接使用的是parent.blade.php的模板布局,這就是繼承,主要注意點(diǎn)就是@yield 和@section 這兩個函數(shù)的使用,極大的提高開發(fā)效率
- 模板判斷
在tp框架中,如果想要使用if判斷必須使用原生php寫法,相對來說的使用起來比較麻煩,那么如果在blade模板中使用,怎么使用呢??
//public function add(){
$data = ['title'=>'laravel','content'=>'blade模板','score'=>mt_rand(40,90)];
return view('add',['data'=>$data]);
}
//模板中展示直接 {{$title}}雙大括號里傳變量名字,模板會自動去解析
{{$score}}
@if($score >= 60)
及格
@else
不及格
@endif
主要的使用方法并沒太大改變,但是注意,如果使用if判斷
兩個注意點(diǎn)
1,加@符號
2,有開始就有結(jié)束 @endif
- 模板循環(huán)
- foreach
- forelse
使用方法與if判斷語句相同
//foreach 循環(huán)
@foreach($user as $u)
{{$u}}
@endforeach
//forelse
@forelse($user as $u)
{{$u}}
@empty
暫無記錄
@endforelse