【Laravelメモ】バリデーションエラー時の入力フォームの値を保持するoldヘルパの使い方

Laravelでは oldヘルパ と呼ばれるメソッドを使うことで、バリデーションエラーになった時に入力フォームの値を自動で保持してくれます。

ここでは、そのoldヘルパの基本的な使い方について解説します。

バリデーションエラー時に入力フォームの値を保持する方法

入力フォームの値を保持したい場合は、次のように書きます。

<input type=’text’ name=’name’ value="{{ old(‘name’) }}">

value属性に「{{ old(‘name属性’) }}」と書くことで、入力した値を自動で保持してくれます。

なので、新規登録フォームとか、ログインフォームとかでこれを書いておくと、エラーがあっても入力値はクリアされず残ったままなので、ユーザーにストレスを与えることはなくなります。

 

しかし、この使い方だと、下のプロフィール編集画面のように「初回表示はDBの値を表示、エラーがあれば入力値を表示」といったことはできません。

初回表示

バリデーションエラー時

valueに {{ old(‘name属性’) }} と書いてしまうと、初回表示はフォームの値は空白ですし、逆にvalueにDBの値を書いてしまうと、バリデーションエラー時もDBの値が表示されてしまいます。

では、この場合はどうすればいいのでしょうか?

初期値はDBの値を表示して、バリデーションエラーがあった場合に入力した値に変更したい場合

実は、これもoldヘルパを使えば簡単に実装可能です。

ただし、次のように書きます。

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

oldヘルパメソッドでは第二引数に初期値を設定することができます。

なので、第二引数にDBの値を指定しておくことで、初回表示はDBの値、それ以降バリデーションエラーがあればフォームの入力値を表示することが可能です。

おすすめのLaravelの書籍

created by Rinker
秀和システム
¥3,300 (2022/12/05 19:44:20時点 Amazon調べ-詳細)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA