Laravel框架中Blade模板的用法示例
简介
Blade它不像其他流行的PHP模板引擎那样限制你在视图中使用原生的PHP代码,事实上它就是把Blade视图编译成原生的PHP代码并缓存起来。缓存会在Blade视图改变时而改变,这意味着Blade并没有给你的应用添加编译的负担。Blade视图文件使用.blade.php后缀,一般情况下都被存储在resources/views目录。
1.继承、片段、占位、组件、插槽
1.1继承
1.1.1定义父模板
Laravel/resources/views/base.blade.php
1.1.2子模板继承
路径:Laravel/resources/views/child.blade.php
@extends('base')
1.2片段
1.2.1父模板定义片段
@section('part')
//中间内容即使一个片段
@show
1.2.2子模板填充片段
@section('part')
片段填充内容
@endsection
1.3占位
1.3.1父模板占位:
@yield('title')
1.3.2子模板填充占位
第一种填充(文本):
@section('title','填充的文本占位')
第二种填充(文本orhtml)
@section('title')
填充的占位
@endsection
1.4组件、插槽
1.4.1定义组件
路径:Laravel/resources/views/component.blade.php
{{$title}}
{{$content}}
1.4.2使用组件
路径:Laravel/resources/views/test.blade.php
@component('component')
@slot('title')
组件标题
@endsolt
@slot('content')
组件内容
@endslot
@endcomponent
2.数据显示
2.1转义输出
{{$name}}
2.2未转义输出
{!!$name!!}
2.3原格式输出
第一种(适合量不多):
@{{name}}
第二种(适合量多):
@verbatim
{{name}}
{{sex}}
{{age}}
@endverbatim
3.流程控制
3.1for
注意:
- 没有$loop变量
- 没有@empty
- 有@break
- 有@continue
@for($i=0;$i<10;++$i)
{{$i}}
@endfor
3.2foreach
注意:
- 有$loop变量
- 没有@empty
- 有@break
- 有@continue
@foreach($dataas$k=>$v)
{{$k}}
@endforeach
3.3forelse
注意:
- 有$loop变量
- 必须有@empty
- 有@break
- 有@continue
@foreach($dataas$k=>$v)
{{$k}}
@empty
数组没有数据
@endforeach
4.使用原生PHP
@php
echo"使用原生PHP";
@endphp
5.包含子视图
注意
- 被包含的子视图可以引用父视图定义的所有变量。
- 你可以传递额外的数据到子视图
定义父视图parent.blade.php,并包含子视图child.blade.php,且传入额外数据
/**
*父视图
*父视图拥有变量$name='chenxuelong'
*/
{{$username}}