Blade 控制语法结构
最后更新于:2022-04-01 15:10:07
## 在 Blade 视图中打印(Echoing)数据
~~~
Hello, {{ $name }}.
The current UNIX timestamp is {{ time() }}.
~~~
## 检查数据是否存在后再打印数据
有时候您想要打印一个变量,但您不确定这个变量是否存在,通常情况下,您会想要这样写::
~~~
{{ isset($name) ? $name : 'Default' }}
~~~
然而,除了写这种三元运算符语法之外,Blade 让您可以使用下面这种更简便的语法:
~~~
{{ $name or 'Default' }}
~~~
## 使用花括号显示文字
如果您需要显示的一个字符串刚好被花括号包起来,您可以在花括号之前加上 `@ 符号`前缀来跳出 Blade 引擎的解析:
~~~
@{{ This will not be processed by Blade }}
~~~
如果您不想数据被转义, 也可以使用如下语法:
~~~
Hello, {!! $name !!}.
~~~
> 特别注意: 在您的应用程序打印用户所提供的内容时要非常小心。请记得永远使用双重花括号来转义内容中的 HTML 实体字符串。
## If 声明
~~~
@if (count($records) === 1)
I have one record!
@elseif (count($records) > 1)
I have multiple records!
@else
I don't have any records!
@endif
@unless (Auth::check())
You are not signed in.
@endunless
~~~
## 循环
~~~
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
@foreach ($users as $user)
<p>This is user {{ $user->id }}</p>
@endforeach
@forelse($users as $user)
<li>{{ $user->name }}</li>
@empty
<p>No users</p>
@endforelse
@while (true)
<p>I'm looping forever.</p>
@endwhile
~~~
## 加载子视图
~~~
@include('view.name')
~~~
您也可以通过传入数组的形式将数据传递给加载的子视图:
~~~
@include('view.name', ['some' => 'data'])
~~~
## 重写区块
如果想要重写掉前面区块中的内容,您可以使用 overwrite 声明:
~~~
@extends('list.item.container')
@section('list.item.content')
<p>This is an item of type {{ $item->type }}</p>
@overwrite
~~~
## 显示语言行
~~~
@lang('language.line')
@choice('language.line', 1)
~~~
## 注释
~~~
{{-- This comment will not be in the rendered HTML --}}
~~~