Blade 模板引擎完全指南(Laravel Blade 详解)

阅读:36 2025-03-27

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>
@endsection



4. 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>
@endswitch


5.3 foreach 循环

@foreach($users as $user)
    <p>{{ $user->name }}</p>
@endforeach



6. 表单与 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 模板! 🚀


标签: Laravel
声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!