この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
ページ更新者:T
更新日時:2018-10-09 10:37:08

タイトル: Bladeテンプレート

LaravelにはBladeというテンプレートエンジンがある。

 

Bladeテンプレートとは?

Bladeテンプレートを使うとと、共通部分(ヘッダー、サイドバー、フッター等)は親ビューに記述し、各ページのコンテンツは親ビューを継承した小ビューに記述するというようなことができる。

また、ディレクティブ(@~)を使用することで「if」や「for」を簡潔に記述することが出来る。

テンプレートの拡張子は「.blade.php」とする。

ディレクティブの使用例は子記事から選択してください。

 

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

 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ディレクティブはビューをレンダーするときに、レイアウトの内容に置き変わる。