| この記事の要点 |
|---|
|
Laravelの親ビュー、子ビューに関する記事です。
テンプレートとなる親ビューの作成
以下はLaravel 13のBladeで描画確認した例です。親・子・部分ビューの名前を具体的にそろえます。既存アプリに追加する場合はビュー名や確認用URLの衝突を避けてください。
viewsディレクトリ内に任意ディレクトリを作り、
以下の例ではlayoutsディレクトリへapp.blade.phpを配置する。任意の名前も使えるが、子の@extendsと一致させる。
※ファイルの拡張子をXXX.blade.phpとする。
resources/views/layouts/app.blade.php
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>@yield('title', 'Default Title')</title>
</head>
<body>
<aside>
@section('sidebar')
サイドバー
@show
</aside>
<main>@yield('content')</main>
</body>
</html>
@sectionディレクティブはコンテンツのセクションを定義する。
@yieldディレクティブは指定したセクションの内容を表示するために使用する。
子ビューの作成
子ビューを定義するには、Blade @extendsディレクティブを使用する。
Bladeレイアウトを拡張するビューは、@sectionディレクティブを使用し、レイアウトのセクションに内容を挿入。
レイアウトでセクションを表示するには@yieldを使用する。
resources/views/page.blade.php
@extends('layouts.app')
@section('title', 'Page Title')
@section('sidebar')
@parent
<p>サイドバーに追加</p>
@endsection
@section('content')
<p>本文のコンテンツ</p>
@include('partials.notice', ['message' => '表示例'])
@endsection
sidebarセクションでは、レイアウトのサイドバーの内容をコンテンツに上書きするのではなく、
追加するために@parentディレクティブを使用。
@parentディレクティブはビューをレンダーするときに、レイアウトの内容に置き変わる。
@includeを使用することで個別にビューを読み込むことが出来る。
@include('partials.notice', ['message' => '表示例'])部分ビューと表示用ルートを用意する
resources/views/partials/notice.blade.phpを作成します。上の子ビューからmessageを渡して読み込みます。{{ $message }}はHTMLをエスケープして表示するため、利用者が入力した文字列をそのままHTMLとして実行しません。
<p class="notice">{{ $message }}</p>学習用アプリのroutes/web.phpへ確認用ルートを追加する例です。表示対象は親ではなく子ビューpageです。既存のRouteインポートがある場合、重ねて追加する必要はありません。
use Illuminate\Support\Facades\Route;
Route::get('/blade-example', function () {
return view('page');
});/blade-exampleを開き、ページタイトルがPage Title、サイドバーに親の「サイドバー」と子の「サイドバーに追加」、本文に「本文のコンテンツ」と「表示例」が出ることを確認します。
ディレクティブの使い分け
| 書き方 | この例での役割 |
|---|---|
| @extends | 子が使う親レイアウトを指定。layouts.appはlayouts/app.blade.phpに対応 |
| @section / @endsection | 子で名前付きの内容を定義。ここで終了してもその位置には表示しない |
| @yield | 親の指定位置へセクションを表示。通常のPHP文のような末尾セミコロンは不要 |
| @section / @show | 親で既定の内容を定義して、その位置に表示 |
| @parent | 子のセクション内で親の既定内容を残す。省略すれば子の内容で置き換わる |
| @include | 別のビューを読み込む。レイアウトの継承とは別の仕組み |
表示できないときの確認
- View not found: ファイル名・ディレクトリ・ドット表記を対応させます。大文字小文字の違いにも注意します。
- 本文が空: 親の@yieldと子の@sectionの名前が一致するか、子ビューを表示しているか確認します。
- 親のサイドバーが消えた: 子が同名セクションを定義するとき、@parentで既定内容を残しているか確認します。
- 意図しない「;」が表示: @yieldの末尾に付けたセミコロンは本文として出るので取り除きます。
確認範囲は親子の継承・@parent・@include・変数のHTMLエスケープです。既存アプリのCSSや認証ルートの動作まではこの例だけでは保証しません。
公式資料: Laravel 13 Bladeのテンプレート継承・部分ビュー・エスケープ(2026年10月確認)。
子ページはありません
- 親ビューと子ビュー(@section, @yield, @extends, @parent, @include)
- 条件分岐(@if)
- 繰り返し(@for, @foreach, @forelse, @while)
- 個別のページにcssやjsを反映させる方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09