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