> Blade 是由 Laravel 提供的非常简单但功能强大的模板引擎
,[参考文档](https://xueyuanjun.com/post/8773.html)
[TOC]
## Controller 中进行渲染
~~~
public function index2(RenderInterface $render)
{
$links = Link::query()->paginate(10);
return $render->render('index.index', ['links' => $links]);
}
~~~
## 注释
> 不同于 HTML 注释,Blade 注释并不会包含到 HTML 中被返回
~~~
{{-- This comment will not be present in the rendered HTML --}}
~~~
## 插槽输出
> 为了避免 XSS 攻击,会自动对数据进行转义
> 插槽里可以调用任何方法,进行返回值的显示
~~~
{{ $name }}
~~~
## 原生数据显示
~~~
{!! $content !!}
~~~
## 渲染 JSON 内容
> 有时候你可能会将数据以数组方式传递到视图再将其转化为 JSON 格式以便初始化某个 JavaScript 变量
~~~
<script>
var app = <?php echo json_encode($array); ?>;
</script>
~~~
> 推荐使用Blade 的 @json 指令
~~~
<script>
var app = @json($array);
</script>
~~~
## If 语句
> 可以使用 @if , @elseif , @else 和 @endif 来构造 if 语句,这些指令的功能和 PHP 相同
~~~
@if (count($records) === 1)
I have one record!
@elseif (count($records) > 1)
I have multiple records!
@else
I don't have any records!
@endif
~~~
## 循环
~~~
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
@foreach ($users as $user)
@if ($user->type == 1)
@continue
@endif
<li>{{ $user->name }}</li>
@if ($user->number == 5)
@break
@endif
@endforeach
~~~
### $loop变量
~~~
@foreach ($users as $user)
@if ($loop->first)
This is the first iteration.
@endif
@if ($loop->last)
This is the last iteration.
@endif
<p>This is user {{ $user->id }}</p>
@endforeach
~~~
> 如果你身处嵌套循环,可以通过 $loop 变量的 parent 属性访问父级循环
~~~
@foreach ($users as $user)
@foreach ($user->posts as $post)
@if ($loop->parent->first)
This is first iteration of the parent loop.
@endif
@endforeach
@endforeach
~~~
> $loop 变量还提供了其他一些有用的属性
| 属性 | 描述 |
| --- | --- |
| `$loop->index` | 当前循环迭代索引 (从0开始) |
| `$loop->iteration` | 当前循环迭代 (从1开始) |
| `$loop->remaining` | 当前循环剩余的迭代 |
| `$loop->count` | 迭代数组元素的总数量 |
| `$loop->first` | 是否是当前循环的第一个迭代 |
| `$loop->last` | 是否是当前循环的最后一个迭代 |
| `$loop->depth` | 当前循环的嵌套层级 |
| `$loop->parent` | 嵌套循环中的父级循环变量 |