Bladeの子テンプレートから親のテンプレートに文字列を渡すのってできるけどちゃんと解説しているサイトが少ない
この手法がちゃんと紹介しているサイトが少なかったので改めてまとめました。
LaravelのBladeテンプレートエンジンでは、親テンプレートと子テンプレートを使って再利用可能なHTML構造を作成することができます。@section
と@yield
は、そのための主要なディレクティブです。以下では、@yield
と@section
を使って親テンプレートと子テンプレート間でどのようにデータをやり取りするかについて説明します。
親テンプレートで子テンプレートで指定された値を表示する
@yield('title', '子テンプレートで値が指定されていない時に表示するテキスト')
@yield
ディレクティブは、親テンプレート内で子テンプレートからのセクション内容を挿入するために使います。具体的には、@yield('title', '子テンプレートで値が指定されていない時に表示するテキスト')
というコードは、title
セクションに子テンプレートで内容が指定されていない場合に、デフォルトで表示されるテキストを定義します。
部分ごとの説明
@yield('title')
:@yield
ディレクティブは、Bladeテンプレート内で特定のセクションの内容を挿入するために使います。'title'
は、セクションの名前です。子テンプレートがこのセクション名を使って内容を定義できます。
- デフォルト値
'子テンプレートで値が指定されていない時に表示するテキスト'
:@yield
ディレクティブの第2引数としてデフォルト値を指定しています。- 子テンプレートでこのセクションが定義されていない場合に、このデフォルト値が表示されます。
子テンプレートから親テンプレートに値を渡す
@section('title', '親テンプレートで表示したいテキスト')
@section
ディレクティブは、LaravelのBladeテンプレートエンジンで子テンプレートが親テンプレートにデータを渡すために使われます。
部分ごとの説明
@section('title')
:@section
ディレクティブは、子テンプレート内で特定のセクションの内容を定義するために使います。'title'
は、セクションの名前です。この名前は親テンプレートで使用される@yield
ディレクティブと一致する必要があります。
- 内容
'親テンプレートで表示したいテキスト'
:- セクション
title
に挿入される内容を指定します。この例では、文字列「親テンプレートで表示したいテキスト」がセクションの内容として定義されています。
- セクション
コメント