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

Laravelでフォームテンプレートを作成する方法(@csrf, old関数の活用)

Laravelでフォームテンプレートを作成する方法(@csrf, old関数の活用)
Laravelでフォームテンプレートを作成する方法(@csrf, old関数の活用)

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

生徒

「Laravelでフォームを作るとき、どうやって安全にデータを送ったり、前の入力を残したりできるんですか?」

先生

「フォームを安全に送るためには、@csrfという特別な仕組みを使います。また、ユーザーが間違えた時に、前に入力した内容を残すにはold関数を使うんですよ。」

生徒

「えーっと、@csrfold関数って何ですか?具体的にどう使うんでしょう?」

先生

「それでは、Laravelのフォームテンプレートでの使い方を一緒に見ていきましょう!」

1. フォームとは?

1. フォームとは?
1. フォームとは?

ウェブサイトでよくある「入力フォーム」は、名前やメールアドレスなどの情報をユーザーから受け取る場所です。
例えば、お問い合わせフォームや会員登録フォームなどです。
Laravelでは、このフォームをBladeテンプレートで簡単に作れます。

2. @csrf(シーエスアールエフ)とは?

2. @csrf(シーエスアールエフ)とは?
2. @csrf(シーエスアールエフ)とは?

インターネット上のフォームは、悪意のある攻撃(CSRF攻撃)から守る必要があります。
CSRF攻撃とは、第三者が勝手にフォームを送信させる攻撃のことです。
@csrfは、Laravelが用意したセキュリティの仕組みで、フォームに特別な「トークン(印)」を埋め込み、正しいユーザーからの送信かどうかをチェックします。

フォームタグの中に必ず@csrfを書くことで、このセキュリティ対策ができます。


<form method="POST" action="/submit">
    @csrf
    <!-- 入力欄など -->
</form>

もし@csrfを入れ忘れると、フォーム送信がエラーになるので必ず書きましょう。

3. old関数とは?

3. old関数とは?
3. old関数とは?

フォームを送信したあとに入力ミスがあった場合、画面を再表示して「どこが間違っていたか」教えてくれます。
その時に、もう一度最初から全部入力するのは大変ですよね。
old関数は、前に入力した値をフォームの中に戻してあげるためのLaravelの便利な機能です。

これでユーザーは、間違った部分だけを修正すれば良くなります。

4. フォームテンプレートの作成例

4. フォームテンプレートの作成例
4. フォームテンプレートの作成例

では、実際に名前を入力するフォームをBladeテンプレートで作ってみましょう。


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

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

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

ポイントは、@csrfを入れていることと、value="{{ old('name') }}"の部分です。
このold('name')が、前回入力した名前をフォームに戻しています。

5. old関数の動きのイメージ

5. old関数の動きのイメージ
5. old関数の動きのイメージ

フォームを送信して、もし入力ミスがあれば、Laravelは自動で前回の入力値を保持してくれます。
そのため、old('name')はその値を呼び出して画面にセットします。
これにより、ユーザーは名前欄に再入力しなくて済みます。

6. 覚えておきたい大切なこと

6. 覚えておきたい大切なこと
6. 覚えておきたい大切なこと
  • @csrfはフォームを安全に送るための必須のタグ。必ずフォーム内に書く。
  • old関数は、入力ミス時に前回入力した値をフォームに戻す便利な機能。
  • フォームのタグのvalue属性に{{ old('name') }}のように書くことで使える。
  • Laravelのフォーム処理でユーザーの使いやすさを大きく向上させる大切なポイント。

まとめ

まとめ
まとめ

Laravelでフォームテンプレートを作成する際に欠かせない@csrfold関数は、安全性と使いやすさを両立するための重要な仕組みです。今回の記事では、フォームを安全に送信するためのCSRFトークンの意味、そしてユーザーが再入力の手間なくフォームを利用できるようにするold関数の働きについて、初心者でも理解しやすい形で詳しく学びました。

まず、@csrfはLaravelが提供する自動的なセキュリティ機能であり、外部からの不正アクセスを防ぐ「見えない盾」として動作します。これをフォーム内に書くだけで、アプリケーションはCSRF攻撃から守られます。特に、ログインフォームやお問い合わせフォームのような重要な入力欄を扱う場合には、安全性を確保する意味でも必ず使用すべき構文です。

一方のold関数は、ユーザー体験を大幅に向上させる機能であり、入力内容に誤りがあった際に「前回入力した情報を保持できる」という大きなメリットがあります。例えば、名前やメールアドレス、住所など複数の項目を入力するフォームでは、ミスした部分だけを修正すればよく、全体を再入力する必要がありません。これは、ユーザーにとって大きなストレス軽減につながります。

また、Laravelはバリデーションとold関数を自動で連携してくれるため、開発者はBlade側にvalue="{{ old('項目名') }}"と書くだけで簡単に実装できます。バリデーションエラーが発生したときに入力値を保つ仕組みが最初から整っている点は、Laravelの強力な利点のひとつといえます。

さらに、@csrfとold関数は単体で使うだけでなく、バリデーションエラー表示(@error)、フォーム構造の分割(@include)、レイアウトの再利用(@extends)などと組み合わせることで、開発効率とユーザー体験をさらに高められます。これらを適切に活用することで、シンプルなフォームから本格的な登録機能まで、自信を持って設計できるようになります。

以下では、フォーム処理に関連する大切なポイントを再確認し、実践で役立つサンプルコードも紹介します。

実践で役立つフォームテンプレート例

バリデーション・エラー表示と組み合わせたフォームの実践例です。


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

    <div class="mb-3">
        <label for="name" class="form-label">名前</label>
        <input type="text" id="name" name="name"
               class="form-control @error('name') is-invalid @enderror"
               value="{{ old('name') }}">
        @error('name')
            <div class="invalid-feedback">
                {{ $message }}
            </div>
        @enderror
    </div>

    <div class="mb-3">
        <label for="email" class="form-label">メールアドレス</label>
        <input type="email" id="email" name="email"
               class="form-control @error('email') is-invalid @enderror"
               value="{{ old('email') }}">
        @error('email')
            <div class="invalid-feedback">
                {{ $message }}
            </div>
        @enderror
    </div>

    <button type="submit" class="btn btn-primary">登録</button>
</form>

この例では、@csrfold()@errorを組み合わせて、実際のWebアプリに近いフォームの作り方を確認できます。間違いがあったときはエラー表示とともに入力が保持されるため、使いやすいフォームが自然に作れることが分かります。

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

生徒

「@csrfを入れるだけで安全になるなんて便利ですね!毎回自分で仕組みを作らなくてもいいんだ。」

先生

「Laravelが自動でトークンを発行してくれるから、安全なフォーム送信を簡単に実装できますよ。」

生徒

「old関数もとても役に立ちますね。大きなフォームほど再入力しないで済むのはありがたいです!」

先生

「ユーザー体験を高めるうえで欠かせない機能ですね。Laravelのフォーム処理は細かいところまで配慮されています。」

生徒

「これで実際に自分のアプリにもフォームを自信をもって作れそうです!」

先生

「ぜひ実践してみてください。フォームはLaravelアプリ開発の基本であり、とても大切な技術ですよ。」

関連記事:
カテゴリの一覧へ
新着記事
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でルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)