PHP 本身并不直接支持 Blade 模板引擎,因为 Blade 是 Laravel 框架的一部分,一个广泛使用的 PHP Web 开发框架。Blade 提供了一个简洁且富有表现力的方式来编写 PHP 模板。下面是如何在 Laravel 中使用 Blade 模板引擎的详细介绍。
1. 安装 Laravel
首先,确保你已经安装了 Laravel。如果还没有安装,可以通过 Composer 安装 Laravel:
composer create-project --prefer-dist laravel/laravel blog
cd blog
2. 了解 Blade 模板文件
Blade 模板文件使用 .blade.php
扩展名,通常存放在 resources/views
目录下。例如,一个名为 welcome.blade.php
的文件可能位于 resources/views/
目录中。
3. 继承布局
Blade 允许你使用 @extends
指令来继承另一个 Blade 模板(布局)。例如,你可能有一个 app.blade.php
布局文件,它定义了应用程序的 HTML 结构,然后你可以在其他视图文件中使用 @extends('layouts.app')
来继承这个布局。
layouts/app.blade.php:
<!DOCTYPE html>
<html>
<head>
<title>App Name - @yield('title')</title>
</head>
<body>
<div class="container">
@yield('content')
</div>
</body>
</html>
welcome.blade.php:
@extends('layouts.app')
@section('title', 'Welcome')
@section('content')
<div class="jumbotron">
<h1>Welcome to Our Site</h1>
<p>Thank you for visiting.</p>
</div>
@endsection
4. 显示数据
你可以使用双花括号 {{ }}
来输出变量或执行 PHP 代码。Blade 会自动对输出进行 HTML 实体转义,以避免 XSS 攻击。
<p>The current UNIX timestamp is {{ time() }}.</p>
5. 条件语句和循环
Blade 提供了 @if
、@unless
、@for
、@foreach
、@while
等指令来构建条件语句和循环。
示例:使用 @foreach
遍历数据
<ul>
@foreach ($users as $user)
<li>{{ $user->name }}</li>
@endforeach
</ul>
6. 组件和插槽
Laravel 6.x 引入了 Blade 组件和插槽,这允许你创建可重用的、封装的 Blade 视图。组件定义在 resources/views/components
目录中。
创建一个组件(例如 Alert.php
):
<!-- resources/views/components/alert.blade.php -->
<div class="alert alert-{{ $type }}">
{{ $slot }}
</div>
在视图中使用组件:
<x-alert type="success">
<strong>Success!</strong> This is a success alert.
</x-alert>
7. 自定义 Blade 指令
Laravel 允许你通过服务提供者中的 Blade::directive
方法来注册自定义的 Blade 指令。
Blade::directive('datetime', function ($expression) {
return "<?php echo (new DateTime($expression))->format('Y-m-d H:i:s'); ?>";
});
在 Blade 模板中使用:
@datetime($yourDateTimeVariable)
Blade 模板引擎为 Laravel 开发者提供了一种强大而灵活的方式来创建视图,它简化了模板的编写过程,并提高了开发效率。