Laravel如何使用Blade模板引擎?(完整语法和示例)

1次阅读

Blade 是 laravel 自带的轻量级模板引擎,编译为原生 php 缓存执行,性能优异;支持双大括号输出与转义、@指令控制结构、模板继承、组件插槽及常用快捷指令。

Laravel如何使用Blade模板引擎?(完整语法和示例)

Blade 是 Laravel 自带的轻量级、功能强大的模板引擎,它允许你在视图中安全地嵌入 PHP 逻辑,同时保持语法简洁、可读性强。它不是直接编译成 PHP,而是编译成原生 PHP 代码缓存起来,因此性能几乎与原生 PHP 相当。

基础语法:输出与转义

Blade 使用双大括号 {{ }} 输出变量内容。默认会对 html 进行自动转义,防止 xss 攻击:

{{ $name }} → 输出转义后的字符串(如 <script></script> 会变成 <script>
{!! $html !!} → 原样输出(不转义),仅用于你完全信任的内容,比如富文本编辑器生成的 HTML。

控制结构:ifforeach、for、while

Blade 提供了简洁的指令语法替代原生 PHP 控制结构,全部以 @ 开头:

  • @if($user->is_active)@endif
  • @unless($user->banned)@endunless(等价于 @if(!...)
  • @for($i = 0; $i … @endfor
  • @foreach($posts as $post)@endforeach(支持 $loop 变量,如 $loop->first$loop->iteration
  • @forelse($posts as $post)@empty 没有数据时显示 … @endforelse

模板继承与布局复用

Blade 的核心优势之一是模板继承,通过 @extends@section 实现“一处定义,多处填充”:

resources/views/layouts/app.blade.php 中定义主布局:

<html> <head><title>@yield('title', '默认标题')</title></head> <body>     <nav>导航栏</nav>     <main>@yield('content')</main>     <footer>© {{ date('Y') }}</footer> </body> </html>

在子视图 resources/views/home.blade.php 中复用:

@extends('layouts.app')  @section('title', '首页')  @section('content')     <h1>欢迎来到首页</h1>     <p>当前用户:{{ Auth::user()?->name ?? '游客' }}</p>                     <div class="aritcle_card">                         <a class="aritcle_card_img" href="/ai/1041">                             <img src="https://img.php.cn/upload/ai_manual/000/000/000/175680040622512.jpg" alt="Otter.ai">                         </a>                         <div class="aritcle_card_info">                             <a href="/ai/1041">Otter.ai</a>                             <p>一个自动的会议记录和笔记工具,会议内容生成和实时转录</p>                             <div class="">                                 <img src="/static/images/card_xiazai.png" alt="Otter.ai">                                 <span>141</span>                             </div>                         </div>                         <a href="/ai/1041" class="aritcle_card_btn">                             <span>查看详情</span>                             <img src="/static/images/cardxiayige-3.png" alt="Otter.ai">                         </a>                     </div>                  @endsection

组件与插槽:封装可复用 ui

从 Laravel 7+ 开始,推荐使用类组件或匿名组件代替传统 @include。例如创建一个按钮组件:

运行命令:php artisan make:component alert,生成 app/View/Components/Alert.phpresources/views/components/alert.blade.php

在组件视图中使用插槽({{ $slot }})接收内容:

<div class="alert alert-{{ $type ?? 'info' }}">     {{ $slot }} </div>

在页面中使用:

<x-alert type="success">     操作成功! </x-alert>

也支持具名插槽:<x-card><name>标题正文内容</name></x-card>

其他常用指令和技巧

  • @include(‘partials.nav’):引入局部视图(支持传参:@include('view.name', ['key' => 'value'])
  • @stack(‘scripts’) + @push(‘scripts’):在布局中预留 js/css 插入点,子视图按需注入
  • @auth / @guest:快捷判断是否登录
  • @can(‘update’, $post):基于策略的权限检查(配合 gate 或 Policies)
  • @json($data):安全输出 json 字符串(自动转义并加引号,常用于前端初始化数据)

基本上就这些。Blade 不复杂但容易忽略细节,比如转义规则、$loop 变量、组件插槽机制,掌握它们能让模板更健壮、协作更清晰。

以上就是Laravel如何使用Blade模板引擎?(完整语法和示例)的详细内容,更多请关注php中文网其它相关文章!

text=ZqhQzanResources