Laravel Blade 是一种简洁、强大的模板引擎,使用它有一些特定的规则和约定,以下从不同方面为你介绍:
1. 基本语法规则
输出表达式
-
双花括号语法:使用
{{ }}
来输出 PHP 变量或表达式的值,输出内容会自动进行 HTML 实体转义,防止 XSS 攻击。
html代码解读复制代码{{ $name }} {{ 1 + 2 }}
-
三花括号语法:使用
{!! !!}
输出内容时不会进行 HTML 实体转义,可直接输出 HTML 代码,但要谨慎使用,防止安全问题。
html代码解读复制代码{!! $htmlContent !!}
注释
使用 {{-- --}}
进行注释,这种注释不会在最终生成的 HTML 中显示。
html代码解读复制代码{{-- 这是一个Blade注释 --}}
2. 控制结构规则
条件语句
-
@if
、@elseif
、@else
和@endif
:用于实现条件判断。
html代码解读复制代码@if ($age < 18) 你是未成年人。 @elseif ($age >= 18 && $age < 60) 你是成年人。 @else 你是老年人。 @endif
-
@unless
:与@if
相反,条件为假时执行代码块。
html代码解读复制代码@unless ($isAdmin) 你没有管理员权限。 @endunless
循环语句
-
@for
:用于传统的for
循环。
html 代码解读复制代码@for ($i = 0; $i < 5; $i++)
<p>这是第 {{ $i }} 次循环p>
@endfor
-
@foreach
:用于遍历数组或集合。
html 代码解读复制代码@foreach ($users as $user)
<p>{{ $user->name }}p>
@endforeach
-
@while
:用于while
循环。
html 代码解读复制代码@while ($count < 10)
<p>当前计数: {{ $count }}p>
@endwhile
3. 布局和组件规则
布局
-
@extends
:用于继承一个布局模板。
html代码解读复制代码@extends('layouts.app')
-
@section
和@yield
:@section
用于在子视图中定义内容区域,@yield
用于在布局模板中预留内容区域。
html 代码解读复制代码{{-- 布局模板 layouts/app.blade.php --}}
html>
<html lang="en">
<head>
<title>@yield('title', '默认标题')title>
head>
<body>
@yield('content')
body>
html>
{{-- 子视图 --}}
@extends('layouts.app')
@section('title', '自定义标题')
@section('content')
<h1>欢迎来到页面h1>
@endsection
组件
-
组件定义:在
resources/views/components
目录下创建组件视图文件,如button.blade.php
。 -
组件使用:使用
语法引入组件,并可以传递属性。
html 代码解读复制代码<x-button type="primary">点击我x-button>
4. 表单和路由规则
表单
-
@csrf
:在表单中使用@csrf
指令生成 CSRF 令牌,防止跨站请求伪造。
html 代码解读复制代码<form method="POST" action="{{ route('submit.form') }}">
@csrf
<input type="text" name="name">
<button type="submit">提交button>
form>
路由
-
route
函数:在 Blade 模板中使用route
函数生成路由链接。
html 代码解读复制代码<a href="{{ route('user.profile', ['id' => $user->id]) }}">查看用户资料a>
5. 自定义指令规则
可以使用 Blade::directive
方法自定义指令。自定义指令通常用于封装一些常用的逻辑。
php 代码解读复制代码// 在服务提供者的 boot 方法中定义自定义指令
use Illuminate\Support\Facades\Blade;
Blade::directive('datetime', function ($expression) {
return "$expression)->format('Y-m-d H:i:s'); ?>";
});
在 Blade 模板中使用自定义指令:
html代码解读复制代码@datetime($createdAt)
6. 继承和优先级规则
- 继承顺序:子视图继承布局模板后,子视图中的内容会覆盖布局模板中对应
@yield
区域的默认内容。 - 指令优先级:Blade 指令会按照代码中的顺序依次执行,在嵌套使用指令时,要注意指令的执行顺序和作用域。
评论记录:
回复评论: