首頁 php框架 Laravel Blade模板是什麼?

Blade模板是什麼?

Jul 02, 2020 am 10:55 AM
blade laravel

Blade模板是是Laravel提供的模板引擎,它簡單強大,Blade允許在視圖中使用原生PHP代碼,Lar​​avel使用的是編譯後的緩存文件,而不是視圖本身,所以Blade對於應用程式來說是零開銷。

Blade模板是什麼?

Blade模板是:

Blade 是 Laravel 提供的模板引擎,它簡單又強大。不像其他的 PHP 模板引擎,Blade 允許在視圖中使用原生 PHP 程式碼。

實際上,所有的 Blade 視圖最終都會被編譯成原生 PHP 程式碼,快取在 storage/framework/views 資料夾中。

Laravel 使用的是這些編譯後的快取文件,而不是視圖本身,所以,Blade 對於應用程式來說是零開銷的。當你修改了視圖文件,那麼它會重新編譯並緩存,以便使用。 Blade 視圖以 blade.php 為後綴名,一般存放於 resources/views 資料夾中。

範本繼承:

1、定義版面檔案

Blade 範本引擎的主要兩個優點是「範本繼承” 和“區塊”。舉一個簡單的例子,一個專案裡,幾乎所有的頁面都是一樣的佈局,這時候就可以把這個佈局提煉出來,作為母版頁,繼承了這個母版頁的的頁面都有一樣的佈局效果,成為母版頁的子頁。母版頁也叫佈局文件,佈局文件就是一個 Blade 視圖:

<!-- Stored in resources/views/layouts/app.blade.php -->
<html>
       <head>
             <title>App Name - @yield(&#39;title&#39;)</title>
       </head>
       <body>
         @section(&#39;sidebar&#39;)
               This is the master sidebar.
         @show
         <div class="container">
              @yield(&#39;content&#39;)
         </div>
       <body>
</html>
登入後複製

佈局文件裡除了基礎的 HTNL 標籤,還使用了兩個指令:@section 和 @yield 。 @section定義區塊,@yield 定義區塊裡的內容。

下面。來定義佈局文件的子頁。

2、繼承佈局文件

子頁中,使用Blade 的@extends 指令指定「繼承」 的佈局文件,使用@section 指令為在佈局文件中使用@section 和@yield 指令的地方注入內容:

<!-- Stored in resources/views/child.blade.php -->
@extends(&#39;layouts.app&#39;)
@section(&#39;title&#39;,&#39;Page Title&#39;)
@section(&#39;sidebar&#39;)
       <p> This is appended to the master sideebar</p>
@endsection
@section(&#39;content&#39;)
         <p>This ismy body content. </p>
@endsection
登入後複製

可以看到,在佈局文件中使用@yield 指令的地方,在子頁中仍然使用@section 注入內容;在佈局文件中使用@section 指令定義的一個好處是:在子頁中使用@section 注入時,可以使用@parent 指令附加(而非重寫)在佈局文件中的內容,而在佈局文件中使用@yield 指令定義的地方是做不到的。 @parent 指令會在視圖渲染的時替換成佈局檔案裡的內容。

注意,與在檔案佈局中定義的 sidebar 不同的是,子頁裡使用 @endsection 結束,而不是 @show 。因為 @endsection 僅用來定義區塊,而 @show 是用來定義、立刻產出區塊的。

從路由直接傳回視圖文件,要用到全域輔助函數helper :

Route::get(&#39;blade&#39;, function(){
        return view(&#39;child&#39;);
})
登入後複製

3、元件&插槽

元件和插槽提供了類似佈局和區塊的優點。而組件和插槽的心智模型更符合直覺。設想一下,在我們的專案中有一個可重複的 「彈框」 元件:

<!-- Stored resource/views/alter.blade.php -->
<div class="alter alter-danger">
       {{ $slot }}
</div>
登入後複製

#{{ $slot }} 表示插入組成的內容。建立此元件,是使用Blade 的@component指令:

@component(&#39;alter&#39;)
        <strong>Whoops!</strong> Something went wrong!
@endcomponent
登入後複製

在這個場景裡,{{ $slot }} 變數的內容是:

<strong>Whoops! </strong> Something went wrong!
登入後複製

有時一個組件需要多個插槽。這時,只需要稍改組件代碼,定義一個 “標題” 插槽,這個插槽稱命名插槽。命名插槽是透過簡單的 “列印” 匹配其名稱的變數來顯示內容的:

<!-- Stored resources/views/alter.blade.php-->
<div class="alter alter-danger">
         <div class="alter-title">{{ $title }}</div>
            {{ $slot }}
</div>
登入後複製

為名名插槽注入內容,使用 @slot 指令。所有不在 @slot 指令裡的內容都會傳遞給元件裡的 $slot 變數。

@compontent (&#39;alter&#39;)
         @slot(&#39;title&#39;)
            Forbidden
         @endslot
     You are not allowed to access this resource!
@edcompontent~
登入後複製

4、為組成傳遞額外資料:

有時需要為組成件遞額外資料。為此,可以為 @conponent 指令傳遞第二個陣列參數。指定要傳遞的額外。根據所有過去的額外數據作為變量,在組件模板裡都可以取的:

@component
     <compontent(&#39;alter&#39;, [&#39;foo&#39; => &#39;bar&#39;);
         .....
@endCompontent
登入後複製

5、顯示數據

向Blade 視圖傳遞數據,是透過將變數包裹在 [ ] 裡實現的:

Route::get(&#39;greeting&#39;, function(){
         return view(&#39;welcome&#39;, [ &#39;name&#39; => &#39;&#39;Samantha&#39;]);
})
登入後複製

下面就可以使用name 變數顯示內容了:

Hello! {{ $name }}
登入後複製

{{ }} 是Blade 視圖的列印語句,當然,列印語句裡不限制只能列印變數內容,也可以使用PHP 函數。實際上,列印語句這裡可以使用任何PHP 程式碼:

The current UNIX timestamp is {{ time() }}
登入後複製

6、顯示非轉移資料

默認,所有傳遞給Blade {{ }} 語句的內容都會使用 htmlspecialchar 函數處理、將內容轉義,避免XSS 攻擊。如果不需要轉義輸出的內容,可以使用下面語法:

Hello! {{!! $name !!}}.
登入後複製

不過千萬要小心,應該優先選擇使用轉義的 {{ }} 語法避免 XXS 攻擊。因為,有時你很難避免使用者有意的、無意的資料輸入。

相關學習推薦:Laravel

#

以上是Blade模板是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱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 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Laravel - Artisan 指令 Laravel - Artisan 指令 Aug 27, 2024 am 10:51 AM

Laravel - Artisan 指令 - Laravel 5.7 提供了處理和測試新指令的新方法。它包括測試 artisan 命令的新功能,下面提到了演示?

Laravel - Artisan 控制台 Laravel - Artisan 控制台 Aug 27, 2024 am 10:51 AM

Laravel - Artisan Console - Laravel 框架提供了三種主要的命令列互動工具,分別是:Artisan、Ticker 和 REPL。本章詳細介紹了 Artisan。

Laravel - 分頁自訂 Laravel - 分頁自訂 Aug 27, 2024 am 10:51 AM

Laravel - 分頁自訂 - Laravel 包含分頁功能,可協助使用者或開發人員包含分頁功能。 Laravel 分頁器與查詢產生器和 Eloquent ORM 整合。自動分頁方法

在Laravel中如何獲取郵件發送失敗時的退信代碼? 在Laravel中如何獲取郵件發送失敗時的退信代碼? Apr 01, 2025 pm 02:45 PM

Laravel郵件發送失敗時的退信代碼獲取方法在使用Laravel開發應用時,經常會遇到需要發送驗證碼的情況。而在實�...

Laravel計劃任務不執行:schedule:run命令後任務未運行怎麼辦? Laravel計劃任務不執行:schedule:run命令後任務未運行怎麼辦? Mar 31, 2025 pm 11:24 PM

Laravel計劃任務運行無響應排查在使用Laravel的計劃任務調度時,不少開發者會遇到這樣的問題:schedule:run...

在 Laravel 中,如何處理郵件發送驗證碼失敗的情況? 在 Laravel 中,如何處理郵件發送驗證碼失敗的情況? Mar 31, 2025 pm 11:48 PM

Laravel郵件發送驗證碼失敗時的處理方法在使用Laravel...

在dcat admin中如何實現點擊添加數據的自定義表格功能? 在dcat admin中如何實現點擊添加數據的自定義表格功能? Apr 01, 2025 am 07:09 AM

在dcatadmin(laravel-admin)中如何實現自定義點擊添加數據的表格功能在使用dcat...

Laravel - 轉儲伺服器 Laravel - 轉儲伺服器 Aug 27, 2024 am 10:51 AM

Laravel - 轉儲伺服器 - Laravel 轉儲伺服器隨 Laravel 5.7 版本提供。先前的版本不包括任何轉儲伺服器。轉儲伺服器將成為 laravel/laravel Composer 檔案中的開發依賴項。

See all articles