この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:10
ページ更新者:atom
更新日時:2026-05-15 03:52:15

タイトル: Bladeテンプレート(ビュー/レイアウト)
SEOタイトル: LaravelのBladeテンプレート(ビュー/レイアウト)とは

この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<thead>
		<tr><th style="background-color:#f39c12;color:#ffffff;text-align:left">この記事の要点</th></tr>
	</thead>
	<tbody>
		<tr>
			<td style="background-color:#fef9e7">
			<ul>
				<li>Laravel の <strong>Blade テンプレートエンジン</strong></li>
				<li>拡張子: <code>.blade.php</code></li>
				<li>主要機能: <strong>テンプレート継承 (<code>@extends</code> / <code>@section</code> / <code>@yield</code>)</strong> + ディレクティブ (<code>@if</code> / <code>@foreach</code> / <code>@csrf</code>)</li>
				<li>コンパイル結果は <code>storage/framework/views/</code> にキャッシュされる</li>
			</ul>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>



<p><span style="font-size:14px"><strong>Laravel</strong>には<span style="color:#e74c3c"><strong>Blade</strong></span>というテンプレートエンジンがある。</span></p>

<p>&nbsp;</p>

<h2>Bladeテンプレートとは?</h2>

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

<p>また、<span style="color:#e74c3c"><strong>ディレクティブ(@~)</strong></span>を使用することで「if」や「for」を簡潔に記述することが出来る。</p>

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

<p>&nbsp;</p>

<h2>ビューとは</h2>

<p><span style="font-size:14px"><span style="color:#e74c3c"><strong>ビュー</strong></span>はアプリケーションのフロントエンドを担当する。</span></p>

<p><span style="font-size:14px"><strong>Laravel</strong>では、表示用のテンプレートをあらかじめ用意し、それを利用して画面表示を行うことが可能。(Bladeテンプレート)</span></p>

<p><span style="font-size:14px">テンプレートは、<strong>「resources」</strong>フォルダ内にある<strong>「views」</strong>フォルダの中に配置する。また、PHPファイルとして作成する。</span></p>

<p><strong>レイアウト</strong>という大枠を作ってそこにビューを組み込むのが一般的なやり方。</p>

<p>&nbsp;</p>

<h2>レイアウトの定義</h2>

<p>以下の様に、レイアウトは大枠を定義する。</p>

<table border="1" cellpadding="1" cellspacing="1" style="width:500px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff"><!-- resources/views/layouts/app.blade.php --><br />
			<!DOCTYPE html><br />
			<html lang="en"><br />
			&nbsp; &nbsp; <head><br />
			&nbsp; &nbsp; &nbsp; &nbsp; <title>Laravel Quickstart - Basic</title></span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; <!-- CSSとJavaScript --><br />
			&nbsp; &nbsp; </head></span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; <body><br />
			&nbsp; &nbsp; &nbsp; &nbsp; <div class="container"><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <nav class="navbar navbar-default"><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <!-- ナビバーの内容 --><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </nav><br />
			&nbsp; &nbsp; &nbsp; &nbsp; </div></span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color:#e74c3c"><strong>@yield('content')</strong></span><br />
			<span style="color:#ffffff">&nbsp; &nbsp; </body><br />
			</html></span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>「<span style="color:#e74c3c"><strong>@yield('content')</strong></span>」にビューを組み込んで内容を表示させる。</p>

<p><span style="color:#ffffff">@yield('content')</span></p>

<h2>ビューの定義</h2>

<p>以下の様に画面に入力項目やボタンを追加する。</p>

<table border="1" cellpadding="1" cellspacing="1" style="width:500px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff"><!-- resources/views/tasks.blade.php --></span><br />
			<span style="color:#e74c3c"><strong>@extends('layouts.app')</strong></span></p>

			<p><span style="color:#e74c3c"><strong>@section('content')</strong></span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; <!-- Bootstrapの定形コード&hellip; --></span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; <div class="panel-body"><br />
			&nbsp; &nbsp; &nbsp; &nbsp; <!-- 新タスクフォーム --><br />
			&nbsp; &nbsp; &nbsp; &nbsp; <form action="{{ url('task') }}" method="POST" class="form-horizontal"><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {{ csrf_field() }}</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <!-- タスク名 --><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="form-group"><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <label for="task" class="col-sm-3 control-label">タスク</label></span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="col-sm-6"><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <input type="text" name="name" id="task-name" class="form-control"><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div></span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <!-- タスク追加ボタン --><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="form-group"><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div class="col-sm-offset-3 col-sm-6"><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <button type="submit" class="btn btn-default"><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <i class="fa fa-plus"></i> タスク追加<br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </button><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><br />
			&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><br />
			&nbsp; &nbsp; &nbsp; &nbsp; </form><br />
			&nbsp; &nbsp; </div></span><br />
			<span style="color:#e74c3c"><strong>@endsection</strong></span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>「<span style="color:#e74c3c"><strong>@extends('layouts.app')</strong></span>」は先ほどの「<strong>resources/views/layouts/app.blade.php</strong>」レイアウトを使用するという意味。</p>

<p>「<span style="color:#e74c3c"><strong>@section('content')</strong></span>」から「<span style="color:#e74c3c"><strong>@endsection</strong></span>」の内容を、先ほどのレイアウトで定義した「<strong>@yield('content')</strong>」の部分に挿入する。</p>

<p>&nbsp;</p>

<h2>ビューの表示</h2>

<p><span style="font-size:14px"><strong><a href="https://jpn.itlibra.com/article?id=10804">ルーティング機能</a></strong></span>を利用し、テンプレートの表示が可能。</p>

<table border="1" cellpadding="1" cellspacing="1" style="width:500px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff"><span style="font-size:14px">Route::メソッド ( ※値</span><span style="font-size:14px">&nbsp;, </span>function ()<span style="font-size:14px"> )&nbsp;</span>{</span></p>

			<p><span style="font-size:14px"><span style="color:#ffffff">&nbsp; &nbsp; return <strong>view</strong>(</span><strong><span style="color:#e74c3c">テンプレート</span> ,<span style="color:#27ae60"> </span><span style="color:#3498db">[連想配列]</span></strong><span style="color:#ffffff">);</span></span></p>

			<p><span style="color:#ffffff"><span style="font-size:14px">});</span></span></p>
			</td>
		</tr>
	</tbody>
</table>

<p><br />
<span style="font-size:14px"><span style="color:#e74c3c"><strong>第1引数</strong></span><span style="color:#000000">:</span>使用するテンプレートの名前を指定。<br />
<br />
<span style="color:#2980b9"><strong>第2引数</strong></span><span style="color:#000000">:</span>テンプレートに渡す値を連想配列で指定。指定された連想配列の値は、そのままテンプレート内で使うことが可能。</span></p>

<p><span style="font-size:14px">※</span>ルーティングで割り当てるアドレス</p>

<p>&nbsp;</p>

<p>具体例は以下の通り。</p>

<table border="1" cellpadding="1" cellspacing="1" style="width:500px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff">Route::get('/', function () {<br />
			&nbsp; &nbsp; return view('</span><span style="color:#e74c3c"><strong>tasks</strong></span><span style="color:#ffffff">');<br />
			});</span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>

<p>&nbsp;</p>