Laravel View(Blade)の基本的な使い方
投稿日:2026/01/14
Laravelでは、画面表示をView(Bladeテンプレート)で管理します。
Controllerは「データを準備する役割」、Viewは「画面を描画する役割」を担い、役割を分離することで保守性の高いアプリケーションを構築できます。
本記事では、LaravelのView(Blade)の基本的な使い方について解説します。
Viewとは?
Viewとは、ユーザーに表示するHTMLを管理するファイルです。
Laravelでは、resources/views配下に配置された
.blade.phpファイルがViewとして扱われます。
Viewの役割は次のとおりです。
- 画面レイアウトの定義
- データの表示
- 条件分岐・繰り返し表示
一方で、次のような処理はViewには書きません。
- データベースアクセス
- ビジネスロジック
- 複雑な計算処理
Viewを表示する基本
Viewファイルを作成する
以下のファイルを作成します。
resources/views/posts/index.blade.php
中身はシンプルなHTMLで問題ありません。
<h1>サンプル一覧</h1>
<p>Laravel Viewのサンプルページです。</p>
ControllerからViewを表示する
Controllerで view() 関数を使ってViewを返します。
public function index()
{
return view('samples.index');
}
view('samples.index') は、
resources/views/samples/index.blade.php を意味します。
ControllerからデータをViewへ渡す
Controllerで取得したデータを、Viewに渡すことができます。
public function index()
{
$samples = Post::latest()->get();
return view('samples.index', compact('samples'));
}
View側では、変数として参照できます。
<h1>記事一覧</h1>
<ul>
@foreach ($samples as $sample)
<li>{{ $sample->title }}</li>
@endforeach
</ul>
{{ }} はHTMLエスケープされるため、XSS対策として安全です。
よく使うBlade構文
変数の表示
{{ $sample->title }}
HTMLをそのまま出力したい場合(※信頼できるデータのみ):
{!! $sample->body !!}
条件分岐(if)
@if ($samples->isEmpty())
<p>記事がありません。</p>
@endif
繰り返し(foreach)
@foreach ($samples as $sample)
<p>{{ $sample->title }}</p>
@endforeach
レイアウトを共通化する
共通レイアウトを作成する
resources/views/layouts/app.blade.php
<!DOCTYPE html>
<html>
<head>
<title>@yield('title')</title>
</head>
<body>
<header>ヘッダー</header>
<main>
@yield('content')
</main>
<footer>フッター</footer>
</body>
</html>
子Viewからレイアウトを継承する
@extends('layouts.app')
@section('title', 'サンプル一覧')
@section('content')
<h1>記事一覧</h1>
@endsection
レイアウトを共通化することで、
ヘッダーやフッターを1か所で管理できます。
Viewでやってはいけないこと
- DBアクセスを書く
- 複雑な条件分岐・計算を書く
- Serviceを直接呼び出す
Viewは 「表示専用」 に徹することが重要です。
まとめ
- Viewは画面表示専用のレイヤー
- Controllerからデータを受け取って表示する
- Blade構文で条件分岐・繰り返しが書ける
- レイアウトを共通化すると保守性が向上する