【初心者向け】Laravel5 Bladeテンプレートでレイアウトを作る方法

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

ページが何十ページもあるサイトでも、全ページ共通している部分ってありますよね。例えば、ヘッダーや、サイドバー、フッターです。

Bladeテンプレートをつかうと、共通部分は親ビューに記述し各ページのコンテンツは親ビューを継承した小ビューに記述するということができます。

Bladeテンプレートの使い方

言葉だけの説明じゃわかりにくいですね。具体的な使い方を見て行きましょう。まずテンプレートとなる親ビューを作ります。

viewsディレクトリ内にlayoutsというディレクトリを作って、その中にmaster.blade.phpというファイルを置きます(ディレクトリ名・ファイル名は何でもいいです)。
Bladeテンプレートを使うにはファイルの拡張子をXXX.blade.phpとしておく必要があります。

resources/views/layouts/master.blade.php

これで親ビューが出来ました。
次に小ビューを作りましょう。前記事「Laravel5入門 コントローラーからビューに変数を渡す方法」で作ったお問合せページを編集します。

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テンプレートの便利な使い方は他にもあります。詳しくはLaravel公式サイトを参考にしてください。