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

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

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

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

生徒

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

先生

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

生徒

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

先生

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

1. old()関数とは?

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

Laravelのold()関数は、フォーム送信後に前回入力された値を取得するための便利なヘルパー関数です。特にLaravelでフォーム入力画面を作成するとき、バリデーションエラーが発生するとページがリダイレクトされ、通常は入力した内容がすべて消えてしまいます。そこでold()関数を使うと、直前のリクエストで送信されたフォームデータを取得し、入力欄に自動で再表示できます。

例えば、ユーザーが名前やメールアドレスを入力して送信したときに入力ミスがあり、エラーメッセージとともにフォームが再表示されるケースがあります。このときold()を使わない場合、ユーザーは最初からすべて入力し直す必要があります。しかしold()を使えば、前回入力した値がそのまま表示されるため、間違った部分だけ修正すればよくなります。

この仕組みによって、Laravelのフォーム処理ではユーザーの入力負担を減らし、使いやすい入力フォームを作ることができます。実際の開発現場でも、問い合わせフォームや会員登録フォームなどでよく使われる基本的なテクニックです。


old('name');

上記のようにold('name')と書くと、前回送信されたフォームのnameという入力フィールドの値を取得できます。Bladeテンプレートの入力フォームと組み合わせることで、エラー発生時でも入力内容を保持できるようになります。

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', '初期値')のように設定できる

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

まとめ

まとめ
まとめ

Laravelのold関数でフォーム入力値を保持する仕組みを振り返る

Laravelでフォームを作成する場合に多くの開発者が直面する問題の一つが、バリデーションエラーが発生したときに入力内容が消えてしまうという状況です。ユーザーが長い文章や複数の入力項目を入力して送信したにもかかわらず、エラー後にすべての入力内容が消えてしまうと、もう一度入力する必要があり大きな負担になります。この問題を解決するためにLaravelではold関数という便利な機能が用意されています。

old関数は直前のリクエストで送信されたフォームデータを取得するための仕組みです。Laravelではバリデーションエラーが発生した場合、自動的に前のページへリダイレクトされます。その際に入力された値はセッションに一時的に保存されます。そしてBladeテンプレートでold関数を利用することで、その保存された値を簡単に取得できるようになります。これによりフォームが再表示されたときにも、ユーザーが入力した内容がそのまま表示されるため、修正したい部分だけを書き直せばよくなります。

Laravelのフォーム開発ではユーザー体験を向上させることが重要です。入力内容を保持する機能は、問い合わせフォーム、会員登録フォーム、プロフィール編集フォーム、コメント投稿フォームなど多くの場面で役立ちます。特に入力項目が多いフォームではold関数の有無によってユーザーの使いやすさが大きく変わります。

基本的な使い方のポイント

old関数の基本的な使い方は非常にシンプルです。inputタグのvalue属性にold関数を設定するだけで、以前送信された値を表示できます。フォームのフィールド名と同じ名前をold関数の引数に指定することがポイントです。これによりLaravelはセッションに保存されている値を取得し、自動的にフォームへ反映します。


<form method="POST" action="/profile">
    @csrf

    <label>名前</label>
    <input type="text" name="name" value="{{ old('name') }}">

    <label>メールアドレス</label>
    <input type="email" name="email" value="{{ old('email') }}">

    <button type="submit">送信</button>
</form>

このように記述しておくことで、バリデーションエラーが発生した場合でもユーザーが入力した名前やメールアドレスがフォームに再表示されます。ユーザーはすべてを入力し直す必要がなくなり、入力ミスの部分だけを修正して再送信できます。

初期値を設定する方法

フォームには初期値を表示したい場合もあります。たとえばプロフィール編集ページでは、既に登録されている名前やメールアドレスを最初に表示しておくことが一般的です。そのような場合はold関数の第二引数に初期値を指定します。これによりバリデーションエラーがないときは初期値を表示し、エラー発生後はユーザーが入力した値を表示するという動作になります。


<input type="text" name="name" value="{{ old('name', $user->name) }}">

この書き方はLaravelのフォーム開発では非常によく利用される方法です。ユーザー情報編集画面や管理画面などでも頻繁に使われるため覚えておくと便利です。

selectやradioやtextareaでの活用

old関数はinputタグだけではなく、selectボックスやradioボタン、textareaでも利用できます。これらのフォーム要素でも以前の入力状態を保持することで、ユーザーの操作を大幅に快適にできます。特にアンケートフォームや問い合わせフォームではtextareaの内容が消えてしまうとユーザーに大きなストレスを与えるため、old関数の利用は重要になります。


<select name="category">
    <option value="question" {{ old('category') == 'question' ? 'selected' : '' }}>質問</option>
    <option value="request" {{ old('category') == 'request' ? 'selected' : '' }}>要望</option>
</select>

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

このように条件分岐と組み合わせることで、選択状態やテキスト内容も正しく復元できます。LaravelのBladeテンプレートはシンプルに書けるため、複雑な処理を書く必要もありません。

バリデーションと組み合わせた実践的な使い方

old関数はLaravelのバリデーション機能と組み合わせることで最大の効果を発揮します。コントローラでvalidateメソッドを利用すると、バリデーションエラーが発生した際に自動的に前のページへ戻り、入力値はセッションに保存されます。その結果、Bladeテンプレートのold関数がその値を取得できるようになります。


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

    // 保存処理
}

このような構成にしておくことで、Laravelのフォーム処理はとてもシンプルで読みやすくなります。ユーザーにとっても開発者にとっても扱いやすいフォームが実現できます。

実務で覚えておきたいポイント

Laravelのフォーム開発ではold関数を活用することで入力体験を大きく改善できます。特に次の点を意識しておくと実務でも役立ちます。フォームのすべての入力フィールドにold関数を設定すること。初期値が必要な場合は第二引数を使うこと。selectやradioやtextareaでも同じように利用できること。バリデーションエラー時のリダイレクトと組み合わせることで自動的に値が復元されること。これらを理解しておくことでLaravelのフォーム開発は格段に効率が上がります。

Laravelのold関数はシンプルな機能ですが、ユーザー体験の向上という点で非常に重要な役割を持っています。フォーム入力保持という基本機能をしっかり理解しておくことで、より使いやすいWebアプリケーションを作ることができます。Laravel初心者の方もぜひ積極的に活用して、実践的なフォーム開発を身につけていきましょう。

先生と生徒の振り返り会話

生徒

先生 Laravelのold関数を使うとフォームの入力内容が保持されるということが分かりました バリデーションエラーのあとでも入力した内容が消えないのでとても便利ですね

先生

その通りです Laravelではフォーム送信後にエラーが発生すると前のページへ戻る仕組みがあります そのとき入力値はセッションに保存されます old関数はその保存された値を取り出して表示する役割があります

生徒

inputタグだけでなくselectやtextareaでも使えるのが便利ですね 問い合わせフォームなどでも役立ちそうです

先生

そうですね 実際の開発では問い合わせフォーム 会員登録フォーム 編集画面など多くの場面で利用されます Laravelでフォームを作るなら必ず覚えておきたい基本機能です

生徒

初期値を設定する方法も便利ですね oldの第二引数に値を書くことでユーザー情報の編集画面などにも対応できます

先生

その理解で正しいです Laravelではユーザー体験を良くすることがとても大切です old関数を使うことで入力ミスがあっても再入力の手間を減らすことができます

生徒

なるほど Laravelのフォーム開発ではバリデーションとold関数をセットで覚えることが大切なのですね

先生

その通りです この二つを理解しておくことで実用的なフォーム処理が作れるようになります Laravelの開発ではとても重要な知識なのでしっかり覚えておきましょう

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Laravelのold()関数とは何ですか?Laravel初心者でも理解できるように、フォーム入力値保持の仕組みを知りたいです。

Laravelのold()関数とは、Laravelフレームワークでフォーム送信後にバリデーションエラーが発生した場合、ユーザーが入力したフォームデータを保持して再表示するための便利な機能です。通常、フォーム送信後にエラーが起きると入力した名前やメールアドレスなどの入力値は消えてしまいます。しかしLaravelのold()関数をBladeテンプレートで使用すると、前回送信されたリクエストの入力データを取得してフォームに再表示できます。これによりユーザーは再入力の手間を省け、ユーザー体験を向上させるWebフォームをLaravelで作成できます。
カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyのルーティング構成の基本を完全解説!初心者向けにYAML・PHP・アノテーション方式をやさしく紹介
New2
Laravel
Laravelのルートグループの使い方!初心者でもわかるprefixやミドルウェアの設定方法
New3
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
New4
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPで文字列を結合する方法!ドット演算子と代入演算子の使い方を徹底解説
No.2
Java&Spring記事人気No2
PHP
PHPのif文の使い方を完全ガイド!初心者でもわかる条件分岐の基本
No.3
Java&Spring記事人気No3
Symfony
Symfonyで翻訳(i18n)機能を使う方法を解説!初心者にもわかる国際化対応の基本
No.4
Java&Spring記事人気No4
Laravel
Laravelのresponse()関数の使い方を完全ガイド!初心者でもわかるレスポンス制御とHTTPレスポンスの基本
No.5
Java&Spring記事人気No5
Laravel
LaravelのAPIルーティングを設定する方法!初心者でもわかるapi.phpの使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.7
Java&Spring記事人気No7
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
No.8
Java&Spring記事人気No8
Laravel
LaravelでRemember Me(ログイン状態保持)機能を実装する方法を完全解説!初心者でも安心の認証入門