# Blade 语法糖参考手册 本文档列出了所有可用的 Blade 语法糖和指令。 ## 变量输出 ### 转义输出 ```blade {{ $variable }} {{ $user->name }} {{ $array['key'] }} ``` 自动转义 HTML 特殊字符,防止 XSS 攻击。 ### 原始输出 ```blade {!! $htmlContent !!} ``` 不转义,直接输出原始 HTML(谨慎使用)。 ### JSON 输出 ```blade @json($data) ``` 将数据编码为 JSON 字符串输出。 ## 控制结构 ### 条件判断 #### @if / @elseif / @else / @endif ```blade @if($user->isAdmin())

管理员

@elseif($user->isModerator())

版主

@else

普通用户

@endif ``` #### @unless / @endunless ```blade @unless($user->isBanned())

用户正常

@endunless ``` 等同于 `@if(!condition)` #### @isset / @endisset ```blade @isset($variable)

{{ $variable }}

@endisset ``` #### @empty / @endempty ```blade @empty($items)

列表为空

@endempty ``` ### 循环 #### @foreach / @endforeach ```blade @foreach($users as $user)

{{ $user->name }}

@endforeach ``` #### @for / @endfor ```blade @for($i = 0; $i < 10; $i++)

Item {{ $i }}

@endfor ``` #### @while / @endwhile ```blade @while($condition)

循环内容

@endwhile ``` #### @forelse / @empty / @endforelse ```blade @forelse($items as $item)

{{ $item->name }}

@empty

没有项目

@endforelse ``` #### @break 和 @continue ```blade @foreach($items as $item) @if($item->hidden) @continue @endif

{{ $item->name }}

@if($item->id > 100) @break @endif @endforeach ``` ### Switch 语句 ```blade @switch($status) @case(1)

待处理

@break @case(2)

处理中

@break @default

未知状态

@endswitch ``` ## 布局和继承 ### @extends ```blade @extends('layouts.app') ``` ### @section / @endsection ```blade @section('content')

页面内容

@endsection ``` ### @yield ```blade @yield('content') @yield('title', '默认标题') ``` ### @parent 在子视图的 section 中使用,输出父布局中对应 section 的内容。 ### @hasSection / @endhasSection ```blade @hasSection('sidebar') @yield('sidebar') @endhasSection ``` ### @sectionMissing / @endsectionMissing ```blade @sectionMissing('sidebar')

没有侧边栏

@endsectionMissing ``` ## 包含和组件 ### @include ```blade @include('components.header') @include('components.footer', ['year' => 2024]) ``` ### @each ```blade @each('components.item', $items, 'item') @each('components.item', $items, 'item', 'components.empty') ``` ## 栈和推送 ### @push / @endpush ```blade @push('scripts') @endpush ``` ### @prepend / @endprepend ```blade @prepend('scripts') @endprepend ``` ### @stack ```blade @stack('scripts') ``` ## 表单辅助 ### @csrf ```blade
@csrf ...
``` ### @method ```blade
@method('PUT') ...
``` ### @old ```blade ``` ### @checked ```blade isActive())> ``` ### @selected ```blade ``` ### @disabled ```blade ``` ### @readonly ```blade ``` ### @required ```blade ``` ## 权限和认证 ### @auth / @endauth ```blade @auth

欢迎,{{ auth()->user()->name }}

@endauth @auth('admin')

管理员面板

@endauth ``` ### @guest / @endguest ```blade @guest 登录 @endguest ``` ### @can / @endcan ```blade @can('edit', $post) 编辑 @endcan ``` ### @cannot / @endcannot ```blade @cannot('edit', $post)

您没有编辑权限

@endcannot ``` ## 错误处理 ### @error / @enderror ```blade @error('email')

{{ $message }}

@enderror ``` ## 其他语法糖 ### @once / @endonce ```blade @once @endonce ``` 确保内容只输出一次。 ### @lang ```blade @lang('messages.welcome') @lang('messages.greeting', ['name' => $user->name]) ``` ### @class ```blade
$isActive, 'disabled' => $isDisabled])> ``` ### @style ```blade
'red', 'font-size' => '14px'])> ``` ### @php / @endphp ```blade @php $count = count($items); $total = array_sum($prices); @endphp ``` ### 注释 ```blade {{-- 这是注释,不会输出到 HTML --}} ``` ## 使用示例 ### 完整的页面模板 ```blade @extends('layouts.app') @section('title', '用户资料') @push('styles') @endpush @section('content') @auth

欢迎,{{ auth()->user()->name }}

@if($user->isAdmin())

管理员

@endif
@csrf @method('PUT') @error('name')

{{ $message }}

@enderror

文章列表

@forelse($posts as $post)

{{ $post->title }}

{{ $post->content }}

@empty

暂无文章

@endforelse @else

请先登录

@endauth @endsection @push('scripts') @endpush ``` ### 布局文件 ```blade @yield('title', '默认标题') @stack('styles')
@include('components.header')
@yield('content')
@stack('scripts') ```