タイトル: BLADE テンプレート
LaravelにはBladeというテンプレートエンジンがある。
Bladeテンプレートをつかうと、共通部分(ヘッダー、サイドバー、フッター等)は親ビューに記述し、
各ページのコンテンツは親ビューを継承した小ビューに記述するというようなことができる。
■テンプレートとなる親ビューの作成
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ディレクティブはビューをレンダーするときに、レイアウトの内容に置き変わる。