前回は簡単な画面表示を行いました。
Laravelではviewにbladeテンプレートを使用します。
bladeテンプレートには、ディレクティブと呼ばれる機能が存在し、phpによるコーディングをスマートにします。
今回はbladeテンプレートを使用した共通レイアウトの使用例を説明します。
Laravelではviewにbladeテンプレートを使用します。
bladeテンプレートには、ディレクティブと呼ばれる機能が存在し、phpによるコーディングをスマートにします。
今回はbladeテンプレートを使用した共通レイアウトの使用例を説明します。
やりたいこと
ウェブ画面を作成する際、コンテンツを用途毎に表示させたい事があります。
コンテンツ以外は共通である為、コンテンツ以外は共通のレイアウトとして1つのファイルを利用すると便利です。
今回は共通レイアウトを作成し、コンテンツは別ファイルへ切り出した画面を表示します。
ファイルの構成は以下の通りです。
コンテンツ以外は共通である為、コンテンツ以外は共通のレイアウトとして1つのファイルを利用すると便利です。
今回は共通レイアウトを作成し、コンテンツは別ファイルへ切り出した画面を表示します。
ファイルの構成は以下の通りです。
ファイル名 | 説明 |
---|---|
resources/views/layouts/main.blade.php | 共通レイアウト |
resources/views/inheritance/inheritance.blade.php | コンテンツファイル |
routes/web.php | ルーティングファイル |
共通レイアウト
以下は、共通レイアウトの例です。
@yieldディレクティブは、他のviewファイルを読むことが出来ます。
このレイアウトファイルを “resources/views/layouts/main.blade.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”を読み込んでいます。
@extendsディレクティブの引数へ、利用したい共通レイアウトファイルを指定します。
以下は“resources/views/layouts/main.blade.php”を読み込んでいます。
@sectionディレクティブで、共通レイアウトへ表示させたい内容を表示します。
@sectionディレクティブの第一引数の値と、共通レイアウトで使用した@yieldディレクティブの第一引数を同じにします。今回は”content”としました。
このファイルを “resources/views/inheritance/inheritance.blade.php” とし配置します。
@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” を指定しています。
“resources/views/inheritance/inheritance.blade.php” をルーティングで指定します。
なお、Laravelでは “resources/views” がviewファイルの置き場所となっているため、指定するのは”resources/views”以下を指定します。
例では、”/inheritance/inheritance.blade.php” を指定しています。
Route::get('/inheritance', function () { return view('inheritance.inheritance'); });
まとめ
次回はBladeテンプレート ディレクティブの使用例を説明します。