カテゴリ: Laravel 更新日: 2025/12/14

Laravelのセッションを使った入力エラーの一時保存方法

Laravelのセッションを使った入力エラーの一時保存方法
Laravelのセッションを使った入力エラーの一時保存方法

先生と生徒の会話形式で理解しよう

生徒

「フォームに入力した値でエラーがあった場合、入力内容を消さずに戻す方法はありますか?」

先生

「はい、Laravelではセッションという仕組みを使うことで、一時的に入力値やエラーメッセージを保存できます。」

生徒

「セッションって何ですか?」

先生

「セッションは、一時的にユーザーごとにデータを保存する仕組みです。フォームで入力した値やエラー情報をセッションに入れておくと、リロードしても値を保持できます。」

1. セッションを使った入力値の一時保存

1. セッションを使った入力値の一時保存
1. セッションを使った入力値の一時保存

フォーム送信後にバリデーションエラーが発生した場合、old()関数を使うと入力値を復元できます。これはセッションに一時保存された値を取得する仕組みです。


<form method="POST" action="{{ route('user.store') }}">
    @csrf
    <input type="text" name="name" class="form-control" placeholder="名前を入力" value="{{ old('name') }}">
    <input type="email" name="email" class="form-control mt-2" placeholder="メールアドレス" value="{{ old('email') }}">
    <button type="submit" class="btn btn-primary mt-2">送信</button>
</form>

この{{ old('name') }}の部分で、前回の入力値がセッションから復元されます。エラーが発生した場合でも、ユーザーは入力した値を消さずにフォームを確認できます。

2. コントローラでバリデーションとセッション保存

2. コントローラでバリデーションとセッション保存
2. コントローラでバリデーションとセッション保存

コントローラでvalidate()を使うと、自動でセッションにエラー情報と入力値が保存されます。


public function store(Request $request)
{
    $validated = $request->validate([
        'name' => 'required|max:50',
        'email' => 'required|email',
    ]);

    User::create($validated);

    return redirect()->route('user.index')->with('success', 'ユーザーを作成しました');
}

ここでバリデーションに失敗すると、自動で入力値はセッションに保存され、エラーメッセージも$errorsでBladeに渡されます。

3. Bladeテンプレートでエラーメッセージを表示する

3. Bladeテンプレートでエラーメッセージを表示する
3. Bladeテンプレートでエラーメッセージを表示する

$errorsを使ってフォーム上にエラーメッセージを表示できます。


@if ($errors->any())
    <div class="alert alert-danger">
        <ul class="mb-0">
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

このようにすると、入力エラーがあった場合にユーザーにわかりやすく表示できます。

4. セッションに保存された値とエラーの流れ

4. セッションに保存された値とエラーの流れ
4. セッションに保存された値とエラーの流れ

入力値やエラーメッセージは以下の流れで保持されます。

  • フォーム送信
  • コントローラでバリデーション
  • 失敗した場合、セッションに入力値とエラーを保存
  • リダイレクトしてフォーム表示
  • Bladeでold()$errorsを使い復元・表示

この流れを理解することで、ユーザー体験が向上し、フォーム入力時のストレスを減らせます。

5. まとめではなく補足ポイント

5. まとめではなく補足ポイント
5. まとめではなく補足ポイント

old()はセッションに保存された直近の入力値を取得する
$errorsはバリデーションエラーを簡単に表示可能
with()メソッドを使えば、任意のメッセージもセッションに一時保存できる
・セッションをうまく使うことで、フォーム送信のユーザー体験が格段に良くなる

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.7
Java&Spring記事人気No7
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.8
Java&Spring記事人気No8
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)