简介
Blade它不像其他流行的 PHP 模板引擎那样限制你在视图中使用原生的 PHP 代码,事实上它就是把 Blade 视图编译成原生的 PHP 代码并缓存起来。缓存会在 Blade 视图改变时而改变,这意味着 Blade 并没有给你的应用添加编译的负担。Blade 视图文件使用 .blade.php 后缀,一般情况下都被存储在 resources/views 目录。
1. 继承、片段、占位、组件、插槽
1.1 继承
1.1.1 定义父模板
1
|
Laravel/resources/views/base.blade.php |
1.1.2 子模板继承
路径:Laravel/resources/views/child.blade.php
1
|
@ extends ( 'base' ) |
1.2 片段
1.2.1 父模板定义片段
1
2
3
|
@section( 'part' ) // 中间内容即使一个片段 @show |
1.2.2 子模板填充片段
1
|
@section( 'part' ) |
片段填充内容
1
|
@endsection |
1.3 占位
1.3.1 父模板占位:
1
|
@yield( 'title' ) |
1.3.2 子模板填充占位
第一种填充(文本):
1
|
@section( 'title' , '填充的文本占位' ) |
第二种填充(文本 or html)
1
|
@section( 'title' ) |
填充的占位
1
|
@endsection |
1.4 组件、插槽
1.4.1 定义组件
路径:Laravel/resources/views/component.blade.php
1
2
3
4
5
|
< div class = 'component' > <!-- $title,$content 变量实际上就是预定义的插槽 --> < div class = 'title' >{{ $title }}</ div > < div class = 'content' >{{ $content }}</ div > </ div > |
1.4.2 使用组件
路径:Laravel/resources/views/test.blade.php
1
2
3
4
5
6
7
8
9
|
@component( 'component' ) @slot( 'title' ) 组件标题 @endsolt @slot( 'content' ) 组件内容 @endslot @endcomponent |
2. 数据显示
2.1 转义输出
1
|
{{ $name }} |
2.2 未转义输出
1
|
{!! $name !!} |
2.3 原格式输出
第一种(适合量不多):
1
|
@{{ name }} |
第二种(适合量多):
1
2
3
4
5
|
@verbatim {{ name }} {{ sex }} {{ age }} @endverbatim |
3. 流程控制
3.1 for
注意:
- 没有 $loop 变量
- 没有 @empty
- 有 @break
- 有 @continue
1
2
3
|
@ for ( $i = 0; $i < 10; ++ $i ) {{ $i }} <br /> @ endfor |
3.2 foreach
注意:
- 有 $loop 变量
- 没有 @empty
- 有 @break
- 有 @continue
1
2
3
|
@ foreach ( $data as $k => $v ) {{ $k }} <br /> @ endforeach |
3.3 forelse
注意:
- 有 $loop 变量
- 必须有 @empty
- 有 @break
- 有 @continue
1
2
3
|
@ foreach ( $data as $k => $v ) {{ $k }} <br /> @ empty |
数组没有数据
1
|
@ endforeach |
4. 使用原生 PHP
1
2
3
|
@php echo "使用原生 PHP" ; @endphp |
5. 包含子视图
注意
- 被包含的子视图可以引用父视图定义的所有变量。
- 你可以传递额外的数据到子视图
定义父视图 parent.blade.php,并包含子视图 child.blade.php,且传入额外数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
/** * 父视图 * 父视图拥有变量 $name = 'chenxuelong' */ <div class = 'parent' > <div class = 'username' >{{ $username }}</div> <div class = 'child' > <!-- 包含子视图 --> @ include ( 'child' , [ 'other' => '额外数据' ]) </div> </div> /** * 子视图 */ <div class = 'username' >{{ $username }}</div> <div class = 'other' >{{ $other }}</div> |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
原文链接:https://segmentfault.com/a/1190000010864876