Laravel5 Bladeテンプレートでレイアウトを作る方法

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

ページが何十ページもあるサイトでも、全ページ共通している部分ってありますよね。例えば、ヘッダーや、サイドバー、フッターです。
Bladeテンプレートをつかうと、共通部分は親ビューに記述し各ページのコンテンツは親ビューを継承した小ビューに記述するということができます。

Bladeテンプレートの使い方

言葉だけの説明じゃわかりにくいですね。
具体的な使い方を見て行きましょう。
まずテンプレートとなる親ビューを作ります。
viewsディレクトリ内にlayoutsというディレクトリを作って、その中にmaster.blade.phpというファイルを置きます(ディレクトリ名・ファイル名は何でもいいです)。
Bladeテンプレートを使うにはファイルの拡張子をXXX.blade.phpとしておく必要があります。
resources/views/layouts/master.blade.php

これで親ビューが出来ました。

次に小ビューを作りましょう。前回作ったお問合せページを編集します。
resources/views/contact.blade.php

contact.blade.phpにはこの4行だけを書いてください。
1行目の@extends(‘layouts.master’)を書くことで、小ビューであるcontact.blade.phpファイルは親ビューであるlayoutsデレクトリ内のmaster.blade.phpファイルを継承することができます。
そして、小ビューの@section(‘content’)から@stopの間の記述が親ビューの@yield(‘content’)に出力されることになります。
他にページを作った時もlayout.blade.phpを継承することで、同じような記述を繰り返す必要がなくなります。

では、他のページには必要ないけどこのcontactページだけstyle.cssというファイルを読み込みたいとします。
その場合、親ビューに新しく@yieldを、小ビューに@sectionを追加します。
resources/views/layouts/master.blade.php

resources/views/contact.blade.php

これで、contactページだけにstyle.cssファイルを追加することができます。

Bladeテンプレートの便利な使い方は他にもあります。詳しくは公式サイトを参考にしてください。