Blade 模板引擎完全指南(Laravel Blade 详解)
Blade 是 Laravel 框架自带的轻量级但功能强大的模板引擎,它提供了简洁的语法,使开发者可以高效地构建动态网页。本指南将全面介绍 Blade 模板的基本语法、布局继承、组件、条件判断、循环、数据输出等内容,帮助你充分掌握 Laravel 的视图系统。
目录
- Blade 简介 
- Blade 语法基础 
- 数据输出 
- 运行 PHP 代码 
- 注释 
- 模板继承(Layouts) 
- 定义主布局 
- 继承布局 
- Blade 组件与插槽(Component & Slot) 
- 条件判断与循环 
- @if,- @elseif,- @else,- @unless
- @switch,- @case,- @default
- @for,- @foreach,- @while
- 表单与 CSRF 令牌 
- 自定义 Blade 指令 
- 总结 
1. Blade 简介
Blade 是 Laravel 的原生模板引擎,它与纯 PHP 文件不同,支持更简洁的语法,同时保持了 PHP 的灵活性。Blade 模板文件默认存放在 resources/views 目录下,并使用 .blade.php 作为文件扩展名。
当 Laravel 渲染 Blade 视图时,会将 Blade 语法编译成 PHP 代码并进行缓存,从而保证了模板的高效执行。
2. Blade 语法基础
2.1 数据输出
Blade 使用双大括号 {{ }} 进行变量输出,Laravel 会自动对输出的内容进行 HTML 实体转义,以防止 XSS 攻击:
<p>用户名:{{ $username }}</p>如果需要输出原始 HTML 内容,可以使用 {!! !!},但要确保内容是安全的,防止 XSS 注入:
<p>用户简介:{!! $bio !!}</p>2.2 运行 PHP 代码
可以使用 @php 指令执行 PHP 代码块:
@php     $time = date('Y-m-d H:i:s'); @endphp <p>当前时间:{{ $time }}</p>2.3 注释
Blade 允许使用 {{-- --}} 进行注释,这些注释不会出现在 HTML 源代码中:
{{-- 这是 Blade 注释,不会出现在页面源码中 --}}3. 模板继承(Layouts)
Blade 提供了一种强大的模板继承方式,使得页面结构可复用,避免代码重复。
3.1 定义主布局
在 resources/views/layouts/app.blade.php 创建一个主模板:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>@yield('title')</title>
</head>
<body>
    <header>
        <h1>网站标题</h1>
    </header>
    <main>
        @yield('content')
    </main>
    <footer>
        <p>版权所有 © 2025</p>
    </footer>
</body>
</html>3.2 继承布局
在子视图中使用 @extends 继承主模板,并使用 @section 填充 @yield 定义的内容区域:
@extends('layouts.app')
@section('title', '首页')
@section('content')
    <p>欢迎来到 Blade 模板引擎教程!</p>
@endsection4. Blade 组件与插槽(Component & Slot)
Blade 组件是可复用的 UI 片段,例如按钮、警告框等。
4.1 创建组件
php artisan make:component Alert
Laravel 会创建两个文件:
- app/View/Components/Alert.php逻辑类
- resources/views/components/alert.blade.php组件视图
4.2 组件视图
<div class="alert alert-{{ $type }}">     
{{ $slot }} 
</div>4.3 在 Blade 中使用
<x-alert type="warning"> 这是一个警告消息! </x-alert>
5. 条件判断与循环
5.1 if 语句
@if($age >= 18) <p>您已成年。</p> @else <p>您未成年。</p> @endif
5.2 switch 语句
@switch($status)
    @case('active')
        <p>账户已激活</p>
        @break
    @case('pending')
        <p>账户待审核</p>
        @break
    @default
        <p>账户状态未知</p>
@endswitch5.3 foreach 循环
@foreach($users as $user)
    <p>{{ $user->name }}</p>
@endforeach6. 表单与 CSRF 令牌
Laravel 需要防止 CSRF 攻击,因此在表单中必须包含 @csrf 令牌:
<form action="/submit" method="POST"> @csrf <input type="text" name="name"> <button type="submit">提交</button> </form>
7. 自定义 Blade 指令
可以创建自定义指令来扩展 Blade 语法。例如,自定义 @datetime 指令格式化时间:
use Illuminate\Support\Facades\Blade;
Blade::directive('datetime', function ($expression) {
    return "<?php echo date('Y-m-d H:i:s', strtotime($expression)); ?>";
});在 Blade 视图中使用:
<p>注册时间:@datetime($user->created_at)</p>
8. 总结
本指南介绍了 Laravel Blade 模板引擎的核心功能,包括:
- 数据输出与 PHP 代码执行 
- 模板继承与布局 
- Blade 组件与插槽 
- 条件判断与循环 
- 表单 CSRF 令牌 
- 自定义 Blade 指令 
掌握这些内容后,可以更高效地构建 Laravel 视图,并提升项目开发效率。希望本文能帮助你更好地理解和应用 Laravel Blade 模板! 🚀
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!

