ホームページ PHPフレームワーク Laravel ブレードテンプレートとは何ですか?

ブレードテンプレートとは何ですか?

Jul 02, 2020 am 10:55 AM
blade laravel

Blade テンプレートは、Laravel によって提供されるテンプレート エンジンです。シンプルかつ強力です。Blade を使用すると、ビューでネイティブ PHP コードを使用できます。Laravel はビュー自体の代わりにコンパイルされたキャッシュ ファイルを使用するため、Blade は次のような場合に非常に役立ちますオーバーヘッドはゼロです。

ブレードテンプレートとは何ですか?

Blade テンプレートは:

Blade は Laravel が提供するテンプレート エンジンで、シンプルかつ強力です。他の PHP テンプレート エンジンとは異なり、Blade ではビューでネイティブ PHP コードを使用できます。

実際、すべての Blade ビューは最終的にネイティブ PHP コードにコンパイルされ、storage/framework/views フォルダーにキャッシュされます。

Laravel はビュー自体ではなく、これらのコンパイルされたキャッシュ ファイルを使用するため、Blade はアプリケーションのオーバーヘッドがゼロです。ビュー ファイルを変更すると、使用できるように再コンパイルされてキャッシュされます。ブレード ビューのサフィックス名は Blade.php で、通常は resources/views フォルダーに保存されます。

テンプレートの継承:

1. レイアウト ファイルの定義

ブレード テンプレート エンジンの主な 2 つの利点は、「テンプレートの継承」です。 「」と「ブロック」。簡単な例を挙げると、プロジェクトでは、ほぼすべてのページが同じレイアウトになっています。このとき、このレイアウトを抽出してマスター ページとして使用できます。このマスター ページを継承するすべてのページは、同じレイアウト効果を持ちます。マスターページの子ページ。マスター ページはレイアウト ファイルとも呼ばれ、レイアウト ファイルはブレード ビューです。

<!-- 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 という 2 つの命令も使用されます。 @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 ディレクティブ定義の利点の 1 つは、子ページで @section インジェクションを使用するときに、@parent ディレクティブを使用してコンテンツを (上書きするのではなく) 追加できることです。レイアウト ファイル内で @yield ディレクティブが使用されているレイアウト ファイルでは実行できません。 @parent ディレクティブは、ビューがレンダリングされるときにレイアウト ファイル内のコンテンツに置き換えられます。

ファイル レイアウトで定義されたサイドバーとは異なり、サブページは @show ではなく @endsection で終了することに注意してください。 @endsection はブロックを定義するためにのみ使用され、@show はブロックを定義してすぐに生成するために使用されるためです。

ルートからビュー ファイルを直接返すには、グローバル補助関数ヘルパーを使用する必要があります:

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 ディレクティブを使用します: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>@component(&amp;#39;alter&amp;#39;) &lt;strong&gt;Whoops!&lt;/strong&gt; Something went wrong! @endcomponent</pre><div class="contentsignin">ログイン後にコピー</div></div>このシナリオでは、

{{ $slot }}

変数の内容は次のとおりです: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&lt;strong&gt;Whoops! &lt;/strong&gt; Something went wrong!</pre><div class="contentsignin">ログイン後にコピー</div></div>場合によっては 1 つコンポーネントには複数のスロットが必要です。現時点では、コンポーネント コードをわずかに変更して、名前付きスロットと呼ばれる「タイトル」スロットを定義するだけで済みます。名前付きスロットは、その名前に一致する変数を単純に「印刷」することでコンテンツを表示します。

<!-- Stored resources/views/alter.blade.php-->
<div class="alter alter-danger">
         <div class="alter-title">{{ $title }}</div>
            {{ $slot }}
</div>
ログイン後にコピー

コンテンツを名前付きスロットに挿入するには、@slot ディレクティブを使用します。 @slot ディレクティブにないコンテンツはすべて、コンポーネントの

$slot

変数に渡されます。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>@compontent (&amp;#39;alter&amp;#39;) @slot(&amp;#39;title&amp;#39;) Forbidden @endslot You are not allowed to access this resource! @edcompontent~</pre><div class="contentsignin">ログイン後にコピー</div></div>

4. コンポーネントの追加データを渡す:

コンポーネントの追加データを渡すことが必要になる場合があります。これを行うには、2 番目の配列引数を @conponent ディレクティブに渡すことができます。渡すエクストラを指定します。過去のすべての追加データは、コンポーネント テンプレートの変数として使用できます:

@component
     <compontent(&#39;alter&#39;, [&#39;foo&#39; => &#39;bar&#39;);
         .....
@endCompontent
ログイン後にコピー

5. データの表示

渡してブレード ビューにデータを転送します。変数は次のようにラップされます。

[ ]

: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>Route::get(&amp;#39;greeting&amp;#39;, function(){ return view(&amp;#39;welcome&amp;#39;, [ &amp;#39;name&amp;#39; =&gt; &amp;#39;&amp;#39;Samantha&amp;#39;]); })</pre><div class="contentsignin">ログイン後にコピー</div></div>name 変数を使用して内容を表示できます:

Hello! {{ $name }}
ログイン後にコピー

{{ }}

Yes ブレード ビューの print ステートメント。もちろん、print ステートメントは変数の内容を印刷することに限定されず、PHP の関数を使用することもできます。実際、ここの print ステートメントでは任意の PHP コードを使用できます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>The current UNIX timestamp is {{ time() }}</pre><div class="contentsignin">ログイン後にコピー</div></div>

6. 転送されていないデータの表示

デフォルトでは、すべてが ## に渡されます。 #Blade {{ }}

ステートメントのコンテンツは、

htmlspecialchar 関数を使用して処理され、XSS 攻撃を回避するためにコンテンツがエスケープされます。出力コンテンツをエスケープする必要がない場合は、次の構文を使用できます:

Hello! {{!! $name !!}}.
ログイン後にコピー
ただし、エスケープされた {{ }} 構文を優先して使用する必要があることに注意してください。 XXS攻撃。ユーザーによる意図的または非意図的なデータ入力を回避することが難しい場合があるためです。

関連する学習の推奨事項:

Laravel

以上がブレードテンプレートとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravel と CodeIgniter の最新バージョンの比較 Laravel と CodeIgniter の最新バージョンの比較 Jun 05, 2024 pm 05:29 PM

Laravel 9 と CodeIgniter 4 の最新バージョンでは、更新された機能と改善が提供されます。 Laravel9はMVCアーキテクチャを採用しており、データベース移行、認証、テンプレートエンジンなどの機能を提供します。 CodeIgniter4 は、HMVC アーキテクチャを使用してルーティング、ORM、およびキャッシュを提供します。パフォーマンスの面では、Laravel9 のサービスプロバイダーベースの設計パターンと CodeIgniter4 の軽量フレームワークにより、優れたパフォーマンスが得られます。実際のアプリケーションでは、Laravel9 は柔軟性と強力な機能を必要とする複雑なプロジェクトに適しており、CodeIgniter4 は迅速な開発や小規模なアプリケーションに適しています。

Laravel と CodeIgniter のデータ処理機能はどのように比較されますか? Laravel と CodeIgniter のデータ処理機能はどのように比較されますか? Jun 01, 2024 pm 01:34 PM

Laravel と CodeIgniter のデータ処理機能を比較します。 ORM: Laravel はクラスとオブジェクトのリレーショナル マッピングを提供する EloquentORM を使用しますが、CodeIgniter は ActiveRecord を使用してデータベース モデルを PHP クラスのサブクラスとして表します。クエリビルダー: Laravel には柔軟なチェーンクエリ API がありますが、CodeIgniter のクエリビルダーはよりシンプルで配列ベースです。データ検証: Laravel はカスタム検証ルールをサポートする Validator クラスを提供しますが、CodeIgniter には組み込みの検証関数が少なく、カスタム ルールの手動コーディングが必要です。実践例:ユーザー登録例はLarを示しています

Laravel と CodeIgniter ではどちらが初心者に優しいでしょうか? Laravel と CodeIgniter ではどちらが初心者に優しいでしょうか? Jun 05, 2024 pm 07:50 PM

初心者にとって、CodeIgniter は学習曲線が緩やかで機能は少ないですが、基本的なニーズはカバーしています。 Laravel は幅広い機能セットを提供しますが、学習曲線はわずかに急になります。パフォーマンスの点では、Laravel と CodeIgniter はどちらも良好なパフォーマンスを示します。 Laravel にはより広範なドキュメントとアクティブなコミュニティ サポートがあり、CodeIgniter はよりシンプルで軽量で、強力なセキュリティ機能を備えています。ブログアプリケーションを構築する実際のケースでは、Laravel の EloquentORM を使用するとデータ操作が簡素化されますが、CodeIgniter ではより手動の構成が必要になります。

Laravel - アーティザンコマンド Laravel - アーティザンコマンド Aug 27, 2024 am 10:51 AM

Laravel - アーティザン コマンド - Laravel 5.7 には、新しいコマンドを処理およびテストするための新しい方法が付属しています。これには職人コマンドをテストする新しい機能が含まれており、そのデモについては以下で説明します。

Laravel と CodeIgniter: 大規模プロジェクトにはどちらのフレームワークが適していますか? Laravel と CodeIgniter: 大規模プロジェクトにはどちらのフレームワークが適していますか? Jun 04, 2024 am 09:09 AM

大規模プロジェクト用のフレームワークを選択する場合、Laravel と CodeIgniter にはそれぞれ独自の利点があります。 Laravel はエンタープライズレベルのアプリケーション向けに設計されており、モジュール設計、依存関係の注入、強力な機能セットを提供します。 CodeIgniter は、速度と使いやすさを重視した、小規模から中規模のプロジェクトに適した軽量フレームワークです。複雑な要件と多数のユーザーを伴う大規模なプロジェクトには、Laravel のパワーとスケーラビリティがより適しています。単純なプロジェクトやリソースが限られている状況では、CodeIgniter の軽量で迅速な開発機能がより理想的です。

PHP エンタープライズ アプリケーション マイクロサービス アーキテクチャ設計に関する Q&A PHP エンタープライズ アプリケーション マイクロサービス アーキテクチャ設計に関する Q&A May 07, 2024 am 09:36 AM

マイクロサービス アーキテクチャは、PHP フレームワーク (Symfony や Laravel など) を使用してマイクロサービスを実装し、RESTful 原則と標準データ形式に従って API を設計します。マイクロサービスはメッセージ キュー、HTTP リクエスト、または gRPC を介して通信し、監視とトラブルシューティングに Prometheus や ELKStack などのツールを使用します。

Laravel と CodeIgniter: 小規模プロジェクトにはどちらのフレームワークが適していますか? Laravel と CodeIgniter: 小規模プロジェクトにはどちらのフレームワークが適していますか? Jun 04, 2024 pm 05:29 PM

小規模なプロジェクトの場合、Laravel は強力な機能とセキュリティを必要とする大規模なプロジェクトに適しています。 CodeIgniter は、軽量さと使いやすさを必要とする非常に小規模なプロジェクトに適しています。

Laravel と CodeIgniter ではどちらのテンプレート エンジンが優れていますか? Laravel と CodeIgniter ではどちらのテンプレート エンジンが優れていますか? Jun 03, 2024 am 11:30 AM

Laravel の Blade と CodeIgniter の Twig テンプレート エンジンを比較し、プロジェクトのニーズと個人的な好みに基づいて選択してください。Blade は MVC 構文に基づいており、適切なコード編成とテンプレートの継承を促進します。 Twig は、柔軟な構文、強力なフィルター、拡張サポート、セキュリティ サンドボックスを提供するサードパーティ ライブラリです。

See all articles