この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:4
ページ更新者:atom
更新日時:2019-07-01 22:06:49

タイトル: 親ビューと子ビュー(@section, @yield, @extends, @parent, @include)
SEOタイトル: 【Laravel】親ビューと子ビュー(@section, @yield, @extends, @parent, @include)

この記事の要点
  • Laravel Blade の親ビュー / 子ビュー(テンプレート継承)
  • 親側: @section / @yield差し込み枠を定義
  • 子側: @extends('親') + @section('name') ... @endsection
  • 部分テンプレ取込: @include('partial') / 親内容呼び出し: @parent

 

Laravelの親ビュー、子ビューに関する記事です。

 

テンプレートとなる親ビューの作成

viewsディレクトリ内に任意ディレクトリを作り、

その中にXXX.blade.phpというファイルを配置する。

※ファイルの拡張子をXXX.blade.phpとする。

 

resources/views/任意ディレクトリ/XXX.blade.php

<!doctype html>

<html >

<head>

    <meta charset="UTF-8">

    <title> @yield('title')</title>

</head>

<body>

    @section('sidebar')

        サイドバー

    @show

    @yield('content');

</body>

</html>

@sectionディレクティブはコンテンツのセクションを定義する。

@yieldディレクティブは指定したセションの内容を表示するために使用する。

 

子ビューの作成

子ビューを定義するには、Blade @extendsディレクティブを使用する。

Bladeレイアウトを拡張するビューは、@sectionディレクティブを使用し、レイアウトのセクションに内容を挿入。

レイアウトでセクションを表示するには@yieldを使用する。

 

resources/views/XXX.blade.php

@extends('親ビューを配置したディレクトリ.app')

@section('title', 'Page Title')

@section('sidebar')

 @parent

 <p>サイドバーに追加</p>

@endsection

@section('content')

 <p>本文のコンテンツ</p>

@endsection

sidebarセクションでは、レイアウトのサイドバーの内容をコンテンツに上書きするのではなく、

追加するために@parentディレクティブを使用。

@parentディレクティブはビューをレンダーするときに、レイアウトの内容に置き変わる。

 

@includeを使用することで個別にビューを読み込むことが出来る。

@include('個別のビュー')