搜索
首页后端开发php教程充分利用 Blade:Laravel 的模板引擎

什么是模板引擎?

模板引擎就像一个工具,可以帮助您将内容和布局分开。这使您的代码更干净且更易于管理。您无需将 HTML 与数据混合,而是创建定义内容外观的模板,然后引擎负责填写详细信息。

什么是刀片?

Blade 是 Laravel 自己的模板引擎,它旨在让您的生活更轻松。 Blade 模板存储在 resources/views 目录中,每个模板都有一个 .blade.php 扩展名。语法简单明了,允许您轻松地将 HTML 与 PHP 混合。例如:

<h1 id="Hello-name">Hello, {{ $name }}!</h1>

但是 Blade 不仅仅用于显示数据。您还可以在模板中添加逻辑,例如循环和条件。这是一个例子:

@if ($user)
    <p>Welcome, {{ $user->name }}!</p>
@else
    <p>Please log in.</p>
@endif

看看根据用户是否登录显示不同的内容是多么容易?下次您需要循环访问用户列表时,请尝试使用 Blade 的 @foreach 指令。它很简单并且可以让你的代码保持整洁。

Get The Most From Blade: Laravel

模板继承

Blade 最好的功能之一是它如何帮助您重用布局。您可以为您的网站创建一个主模板,然后只需填写每个页面的唯一内容。这是一个简单的例子:

<!-- layout.blade.php -->


    <title>@yield('title')</title>


    <div>



<p>This layout has placeholders (@yield) for the title and the main content. Now, let’s say you’re creating a home page. You can extend this layout like this:<br>
</p>

<pre class="brush:php;toolbar:false">@extends('layout')

@section('title', 'Home Page')

@section('content')
    <h1 id="Welcome-to-the-Home-Page">Welcome to the Home Page!</h1>
@endsection

通过使用@extends,您可以链接到布局,而@section允许您使用特定内容填充占位符。这使您的代码保持干燥(不要重复)并且超级易于管理。 Blade 简化了您的工作流程,让您能够更加专注于重要的事情——构建出色的 Web 应用程序。

Get The Most From Blade: Laravel

叶片组件

刀片组件就像 UI 的小构建块。将它们想象成乐高积木——您可以创建界面的一个可重复使用的小部分,并可以将其卡入您需要的任何位置。这使您的代码更干净且更易于维护。

您可以定义一次组件并在整个应用程序中使用它。需要一个在不同页面上看起来相同的按钮吗?为它创建一个 Blade 组件!更好的是,您可以将属性传递给这些组件,使它们灵活且适应性强。

这是一个按钮组件的简单示例:

<!-- resources/views/components/button.blade.php -->
<button>{{ $slot }}</button>

<!-- Usage -->
<x-button>Click Me</x-button>

您可以使用组件类使组件动态化。这允许您传入类型或类等属性来自定义按钮的行为或样式。

// In a component class
public function render()
{
    return view('components.button', [
        'type' => $this->type,
        'class' => $this->class,
    ]);
}

// In the Blade component
<button type="{{ $type }}">



<h2>
  
  
  Including Subviews
</h2>

<p>Sometimes, you’ll want to break your templates into smaller pieces for better organization and reusability. Blade makes this easy with the @include directive. Think of it as a way to insert a smaller view (or subview) into a larger one.</p>

<p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173172787698773.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Get The Most From Blade: Laravel"></p>

<h2>
  
  
  Blade Directives
</h2>

<p>Blade comes packed with handy directives that make common tasks a breeze. Here are a few:<br>
@csrf: CSRF token to your forms, protecting them from cross-site request forgery attacks<br>
@method: specifies the HTTP method for forms<br>
@auth: checks if a user is authenticated<br>
@guest: checks if a user is a guest (not authenticated)<br>
</p>

<pre class="brush:php;toolbar:false">
@csrf @method('PUT')

需要更多定制的东西吗?您可以创建自己的 Blade 指令以实现可重用逻辑。

例如,假设您经常需要格式化日期。您可以像这样定义自定义指令:

<h1 id="Hello-name">Hello, {{ $name }}!</h1>

Get The Most From Blade: Laravel

其他特点

Blade 配备了一些非常方便的功能,可以让您作为开发人员的生活更加顺利。让我们深入研究其中的一些。

管理资产 URL

需要链接您的 CSS 或 JavaScript 文件吗? asset() 辅助函数可以满足您的需求。它会为您的资源生成正确的 URL,因此您不必担心路径:

@if ($user)
    <p>Welcome, {{ $user->name }}!</p>
@else
    <p>Please log in.</p>
@endif

处理空数组或集合

Blade 的 @forelse 指令在处理空数组或集合时是一个救星。它可以让您循环遍历项目,还可以优雅地处理没有项目的情况:

<!-- layout.blade.php -->


    <title>@yield('title')</title>


    <div>



<p>This layout has placeholders (@yield) for the title and the main content. Now, let’s say you’re creating a home page. You can extend this layout like this:<br>
</p>

<pre class="brush:php;toolbar:false">@extends('layout')

@section('title', 'Home Page')

@section('content')
    <h1 id="Welcome-to-the-Home-Page">Welcome to the Home Page!</h1>
@endsection

有条件的内容显示

Blade 提供了多种指令来根据条件显示内容:

@isset:检查变量是否已设置
@empty:检查变量是否为空
@unless:与 if 类似,但相反
这是使用 @isset 的示例:

<!-- resources/views/components/button.blade.php -->
<button>{{ $slot }}</button>

<!-- Usage -->
<x-button>Click Me</x-button>

防范 XSS

Blade 自动转义输出以保护您的应用程序免受 XSS(跨站脚本)攻击。但有时,您可能想要输出原始 HTML。在这种情况下,请使用 {!! !!}:

// In a component class
public function render()
{
    return view('components.button', [
        'type' => $this->type,
        'class' => $this->class,
    ]);
}

// In the Blade component
<button type="{{ $type }}">



<h2>
  
  
  Including Subviews
</h2>

<p>Sometimes, you’ll want to break your templates into smaller pieces for better organization and reusability. Blade makes this easy with the @include directive. Think of it as a way to insert a smaller view (or subview) into a larger one.</p>

<p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173172787698773.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Get The Most From Blade: Laravel"></p>

<h2>
  
  
  Blade Directives
</h2>

<p>Blade comes packed with handy directives that make common tasks a breeze. Here are a few:<br>
@csrf: CSRF token to your forms, protecting them from cross-site request forgery attacks<br>
@method: specifies the HTTP method for forms<br>
@auth: checks if a user is authenticated<br>
@guest: checks if a user is a guest (not authenticated)<br>
</p>

<pre class="brush:php;toolbar:false">
@csrf @method('PUT')

Get The Most From Blade: Laravel

高级使用

需要包含包含 Blade 语法的原始 HTML 或 JavaScript?使用 @verbatim 指令阻止 Blade 尝试解析它:

// In a service provider
Blade::directive('datetime', function ($expression) {
    return "<?php echo ($expression)->format('Y-m-d H:i:s'); ?>";
});

// Usage in Blade
@datetime($dateVariable)

使用 API? Blade 可以轻松地直接在模板中渲染 JSON 数据:

<link rel="stylesheet" href="%7B%7B%20asset('css/app.css')%20%7D%7D">

如果您使用 Livewire,Blade 可以与其无缝协作。您可以将 Blade 组件与 Livewire 组件一起使用,以实现动态的交互式 UI,而无需编写太多 JavaScript。

@once 指令确保一段代码只运行一次。 Blade 允许您创建根据您传​​递的数据进行调整的动态组件。这对于灵活、可重用的 UI 片段来说非常有用:

@forelse ($items as $item)
    <p>{{ $item }}</p>
@empty
    <p>No items found.</p>
@endforelse

@error 指令可帮助您轻松显示特定字段的错误消息:

@isset($variable)
    <p>{{ $variable }}</p>
@endisset

当我第一次开始使用 Blade 时,我对自己有多少选择感到有点迷失,但不久之后,整个世界就向我敞开了。现在我无法想象没有它的多功能功能的编码。我希望这篇文章能帮助您找到进入这个令人惊叹的模板引擎的方法。

以上是充分利用 Blade:Laravel 的模板引擎的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?PHP类型提示如何起作用,包括标量类型,返回类型,联合类型和无效类型?Apr 17, 2025 am 12:25 AM

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。

PHP如何处理对象克隆(克隆关键字)和__clone魔法方法?PHP如何处理对象克隆(克隆关键字)和__clone魔法方法?Apr 17, 2025 am 12:24 AM

PHP中使用clone关键字创建对象副本,并通过\_\_clone魔法方法定制克隆行为。1.使用clone关键字进行浅拷贝,克隆对象的属性但不克隆对象属性内的对象。2.通过\_\_clone方法可以深拷贝嵌套对象,避免浅拷贝问题。3.注意避免克隆中的循环引用和性能问题,优化克隆操作以提高效率。

PHP与Python:用例和应用程序PHP与Python:用例和应用程序Apr 17, 2025 am 12:23 AM

PHP适用于Web开发和内容管理系统,Python适合数据科学、机器学习和自动化脚本。1.PHP在构建快速、可扩展的网站和应用程序方面表现出色,常用于WordPress等CMS。2.Python在数据科学和机器学习领域表现卓越,拥有丰富的库如NumPy和TensorFlow。

描述不同的HTTP缓存标头(例如,Cache-Control,ETAG,最后修饰)。描述不同的HTTP缓存标头(例如,Cache-Control,ETAG,最后修饰)。Apr 17, 2025 am 12:22 AM

HTTP缓存头的关键玩家包括Cache-Control、ETag和Last-Modified。1.Cache-Control用于控制缓存策略,示例:Cache-Control:max-age=3600,public。2.ETag通过唯一标识符验证资源变化,示例:ETag:"686897696a7c876b7e"。3.Last-Modified指示资源最后修改时间,示例:Last-Modified:Wed,21Oct201507:28:00GMT。

说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1?说明PHP中的安全密码散列(例如,password_hash,password_verify)。为什么不使用MD5或SHA1?Apr 17, 2025 am 12:06 AM

在PHP中,应使用password_hash和password_verify函数实现安全的密码哈希处理,不应使用MD5或SHA1。1)password_hash生成包含盐值的哈希,增强安全性。2)password_verify验证密码,通过比较哈希值确保安全。3)MD5和SHA1易受攻击且缺乏盐值,不适合现代密码安全。

PHP:服务器端脚本语言的简介PHP:服务器端脚本语言的简介Apr 16, 2025 am 12:18 AM

PHP是一种服务器端脚本语言,用于动态网页开发和服务器端应用程序。1.PHP是一种解释型语言,无需编译,适合快速开发。2.PHP代码嵌入HTML中,易于网页开发。3.PHP处理服务器端逻辑,生成HTML输出,支持用户交互和数据处理。4.PHP可与数据库交互,处理表单提交,执行服务器端任务。

PHP和网络:探索其长期影响PHP和网络:探索其长期影响Apr 16, 2025 am 12:17 AM

PHP在过去几十年中塑造了网络,并将继续在Web开发中扮演重要角色。1)PHP起源于1994年,因其易用性和与MySQL的无缝集成成为开发者首选。2)其核心功能包括生成动态内容和与数据库的集成,使得网站能够实时更新和个性化展示。3)PHP的广泛应用和生态系统推动了其长期影响,但也面临版本更新和安全性挑战。4)近年来的性能改进,如PHP7的发布,使其能与现代语言竞争。5)未来,PHP需应对容器化、微服务等新挑战,但其灵活性和活跃社区使其具备适应能力。

为什么要使用PHP?解释的优点和好处为什么要使用PHP?解释的优点和好处Apr 16, 2025 am 12:16 AM

PHP的核心优势包括易于学习、强大的web开发支持、丰富的库和框架、高性能和可扩展性、跨平台兼容性以及成本效益高。1)易于学习和使用,适合初学者;2)与web服务器集成好,支持多种数据库;3)拥有如Laravel等强大框架;4)通过优化可实现高性能;5)支持多种操作系统;6)开源,降低开发成本。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),