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

Laravelのold()関数でフォーム再表示時に値を保持する方法

Laravelの`old()`関数でフォーム再表示時に値を保持する方法
Laravelの`old()`関数でフォーム再表示時に値を保持する方法

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

生徒

「先生、Laravelでフォーム送信後にエラーが出たとき、入力した値が消えてしまうんですけど、何とかならないですか?」

先生

「それならold()関数を使うと便利です。以前入力した値を自動で保持して、フォーム再表示時に復元できます。」

生徒

「具体的にはどうやって使うんですか?」

先生

「それでは、Bladeテンプレートでの使い方を見ていきましょう!」

1. old()関数とは?

1. old()関数とは?
1. old()関数とは?

Laravelのold()関数は、前回のリクエストで送信されたフォームの値を取得するための関数です。例えば、ユーザーが名前やメールアドレスを入力してフォーム送信した際に、バリデーションエラーでフォームが再表示される場合、入力値が消えずに残るようにすることができます。これにより、ユーザーの入力ミスを修正するだけで済み、ユーザー体験が向上します。

2. Bladeテンプレートでの使い方

2. Bladeテンプレートでの使い方
2. Bladeテンプレートでの使い方

具体的には、入力フィールドのvalue属性にold()を設定します。例えば、名前とメールアドレスの入力フォームは次のようになります。


<form action="/contact" method="POST">
    @csrf
    <div>
        <label for="name">名前:</label>
        <input type="text" id="name" name="name" value="{{ old('name') }}">
    </div>
    <div>
        <label for="email">メールアドレス:</label>
        <input type="email" id="email" name="email" value="{{ old('email') }}">
    </div>
    <button type="submit">送信</button>
</form>

このようにvalue="{{ old('フィールド名') }}"と書くことで、前回入力した内容が自動でセットされます。

3. selectやtextareaでの利用方法

3. selectやtextareaでの利用方法
3. selectやtextareaでの利用方法

selectボックスやtextareaでもold()を使えます。選択状態やテキスト内容を保持することで、ユーザーが再入力する手間を省けます。


<select name="gender">
    <option value="male" {{ old('gender') == 'male' ? 'selected' : '' }}>男性</option>
    <option value="female" {{ old('gender') == 'female' ? 'selected' : '' }}>女性</option>
</select>

<textarea name="message">{{ old('message') }}</textarea>

4. バリデーションと組み合わせる

4. バリデーションと組み合わせる
4. バリデーションと組み合わせる

Laravelのバリデーションと組み合わせることで、フォーム送信時にエラーが発生した場合もold()で値を保持できます。例えば、コントローラでバリデーションエラーが発生した場合、自動的にリダイレクトされ、入力値はold()で復元されます。


public function store(Request $request) {
    $validated = $request->validate([
        'name' => 'required|max:50',
        'email' => 'required|email'
    ]);
    // データ保存処理
}

5. old()関数を使うときのポイント

5. old()関数を使うときのポイント
5. old()関数を使うときのポイント
  • フォームの各入力フィールドにold('フィールド名')を設定する
  • selectやradio、textareaも同様に値を復元できる
  • バリデーションエラー時のリダイレクトと組み合わせると自動で値が保持される
  • 初期値がある場合はold('name', '初期値')のように設定できる

これらのポイントを押さえることで、ユーザーにとって入力しやすく、ストレスの少ないフォームを作成できます。

カテゴリの一覧へ
新着記事
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関数)