PHP LaravelのBladeで@section, @yieldを使って子テンプレートから親テンプレートに指定した文字列を表示する方法

プログラミング

Bladeの子テンプレートから親のテンプレートに文字列を渡すのってできるけどちゃんと解説しているサイトが少ない

この手法がちゃんと紹介しているサイトが少なかったので改めてまとめました。

LaravelのBladeテンプレートエンジンでは、親テンプレートと子テンプレートを使って再利用可能なHTML構造を作成することができます。@section@yieldは、そのための主要なディレクティブです。以下では、@yield@sectionを使って親テンプレートと子テンプレート間でどのようにデータをやり取りするかについて説明します。

親テンプレートで子テンプレートで指定された値を表示する

@yield('title', '子テンプレートで値が指定されていない時に表示するテキスト')

@yieldディレクティブは、親テンプレート内で子テンプレートからのセクション内容を挿入するために使います。具体的には、@yield('title', '子テンプレートで値が指定されていない時に表示するテキスト')というコードは、titleセクションに子テンプレートで内容が指定されていない場合に、デフォルトで表示されるテキストを定義します。

部分ごとの説明

  1. @yield('title'):
    • @yieldディレクティブは、Bladeテンプレート内で特定のセクションの内容を挿入するために使います。
    • 'title'は、セクションの名前です。子テンプレートがこのセクション名を使って内容を定義できます。
  2. デフォルト値 '子テンプレートで値が指定されていない時に表示するテキスト':
    • @yieldディレクティブの第2引数としてデフォルト値を指定しています。
    • 子テンプレートでこのセクションが定義されていない場合に、このデフォルト値が表示されます。

子テンプレートから親テンプレートに値を渡す

@section('title', '親テンプレートで表示したいテキスト')

@sectionディレクティブは、LaravelのBladeテンプレートエンジンで子テンプレートが親テンプレートにデータを渡すために使われます。

部分ごとの説明

  1. @section('title'):
    • @sectionディレクティブは、子テンプレート内で特定のセクションの内容を定義するために使います。
    • 'title'は、セクションの名前です。この名前は親テンプレートで使用される@yieldディレクティブと一致する必要があります。
  2. 内容 '親テンプレートで表示したいテキスト':
    • セクションtitleに挿入される内容を指定します。この例では、文字列「親テンプレートで表示したいテキスト」がセクションの内容として定義されています。

コメント

タイトルとURLをコピーしました