Bladeテンプレート 共通レイアウトの利用 Laravel5.8

前回は簡単な画面表示を行いました。
Laravelではviewにbladeテンプレートを使用します。
bladeテンプレートには、ディレクティブと呼ばれる機能が存在し、phpによるコーディングをスマートにします。
今回はbladeテンプレートを使用した共通レイアウトの使用例を説明します。
やりたいこと
ウェブ画面を作成する際、コンテンツを用途毎に表示させたい事があります。
コンテンツ以外は共通である為、コンテンツ以外は共通のレイアウトとして1つのファイルを利用すると便利です。
今回は共通レイアウトを作成し、コンテンツは別ファイルへ切り出した画面を表示します。
ファイルの構成は以下の通りです。
ファイル名 説明
resources/views/layouts/main.blade.php 共通レイアウト
resources/views/inheritance/inheritance.blade.php コンテンツファイル
routes/web.php ルーティングファイル
共通レイアウト
以下は、共通レイアウトの例です。
@yieldディレクティブは、他のviewファイルを読むことが出来ます。
このレイアウトファイルを “resources/views/layouts/main.blade.php” とし配置します。
<html>
    <head></head>
    <body>
        <main>
          @yield('content')
        </main>
    </body>
</html>
コンテンツファイル
共通レイアウト(main.blade.php)を読み込むには@extendsディレクティブを使用します。
@extendsディレクティブの引数へ、利用したい共通レイアウトファイルを指定します。
以下は“resources/views/layouts/main.blade.php”を読み込んでいます。

@sectionディレクティブで、共通レイアウトへ表示させたい内容を表示します。
@sectionディレクティブの第一引数の値と、共通レイアウトで使用した@yieldディレクティブの第一引数を同じにします。今回は”content”としました。
このファイルを “resources/views/inheritance/inheritance.blade.php” とし配置します。
<!-- 共通レイアウトを読み込む。 -->
@extends('layouts.main')

<!-- 共通レイアウトへコンテンツを表示する。 -->
@section('content')
  <p>コンテンツ</p>
@endsection
ルーティング
ルーティングで指定するビューファイルは、レイアウトファイルではなく、コンテンツファイルとします。
“resources/views/inheritance/inheritance.blade.php” をルーティングで指定します。
なお、Laravelでは “resources/views” がviewファイルの置き場所となっているため、指定するのは”resources/views”以下を指定します。
例では、”/inheritance/inheritance.blade.php” を指定しています。

Route::get('/inheritance', function () {
    return view('inheritance.inheritance');
});
まとめ
© DeNnie.Lab All Rights Reserved.