模板
Blade 模板
Blade 是 Laravel 提供的一个简单而强大的模板引擎。与控制器布局不同,Blade 由 模板继承 和 部分 驱动。所有 Blade 模板都应使用 .blade.php
扩展名。
定义 Blade 布局
php
<!-- 存储在 resources/views/layouts/master.blade.php -->
<html>
<head>
<title>应用名称 - @yield('title')</title>
</head>
<body>
@section('sidebar')
这是主侧边栏。
@show
<div class="container">
@yield('content')
</div>
</body>
</html>
使用 Blade 布局
php
@extends('layouts.master')
@section('title', '页面标题')
@section('sidebar')
@@parent
<p>这是附加到主侧边栏的内容。</p>
@stop
@section('content')
<p>这是我的正文内容。</p>
@stop
请注意,扩展 Blade 布局的视图只是覆盖布局中的部分。可以在子视图中使用 @@parent
指令包含布局的内容,从而允许您附加到布局部分的内容,例如侧边栏或页脚。
有时,例如当您不确定是否定义了某个部分时,您可能希望将默认值传递给 @yield
指令。您可以将默认值作为第二个参数传递:
php
@yield('section', '默认内容')
其他 Blade 控制结构
输出数据
php
你好,{{ $name }}。
当前的 UNIX 时间戳是 {{ time() }}。
检查存在性后输出数据
有时您可能希望输出一个变量,但不确定该变量是否已设置。基本上,您想这样做:
php
{{ isset($name) ? $name : '默认' }}
然而,Blade 允许您使用以下便捷的简写,而不是编写三元语句:
php
{{ $name or '默认' }}
使用大括号显示原始文本
如果您需要显示一个用大括号包裹的字符串,可以通过在文本前加上 @
符号来转义 Blade 行为:
php
@{{ 这不会被 Blade 处理 }}
如果您不希望数据被转义,可以使用以下语法:
php
你好,{!! $name !!}。
在输出由应用程序用户提供的内容时要非常小心。始终使用双大括号语法来转义内容中的任何 HTML 实体。
If 语句
php
@if (count($records) === 1)
我有一条记录!
@elseif (count($records) > 1)
我有多条记录!
@else
我没有任何记录!
@endif
@unless (Auth::check())
您未登录。
@endunless
循环
php
@for ($i = 0; $i < 10; $i++)
当前值是 {{ $i }}
@endfor
@foreach ($users as $user)
<p>这是用户 {{ $user->id }}</p>
@endforeach
@forelse($users as $user)
<li>{{ $user->name }}</li>
@empty
<p>没有用户</p>
@endforelse
@while (true)
<p>我在无限循环。</p>
@endwhile
包含子视图
php
@include('view.name')
您还可以将数据数组传递给包含的视图:
php
@include('view.name', ['some' => 'data'])
覆盖部分
要完全覆盖一个部分,可以使用 overwrite
语句:
php
@extends('list.item.container')
@section('list.item.content')
<p>这是类型为 {{ $item->type }} 的项目</p>
@overwrite
显示语言行
php
@lang('language.line')
@choice('language.line', 1)
注释
php
{{-- 此注释不会出现在渲染的 HTML 中 --}}