LoginSignup
2
2

More than 1 year has passed since last update.

【Laravel】フォームに入力した値を保持する方法(新規登録・編集)

Posted at

はじめに

バリデーションエラーになってしまった場合に、入力した値が消えてしまうと、ユーザーに再び全ての値を打ち直させるのことになってしまい、ユーザーに過度の負担を強いてしまいますよね。
そこで、入力した値を保持し、エラーが発生した部分だけを書き換えれば済むように、oldヘルパを使いましょう。

oldヘルパ

新規登録

create.blade.php
<input type="text" name="menu_name" value="{{ old('menu_name') }}">

このように、value属性にoldヘルパを記述し、引数にname属性値を入れることで、エラー発生時に入力していた値を保持してくれます。

新規登録の際は、このような記述で良いのですが、編集の場合も同じように記述にすると、新規登録によってデータベースに登録していた値が表示されず、編集画面を開いた際、フォームには何も値が表示されていない状態になってしまいます。

そこで、編集・更新の場面では、データベースに登録していた値を初期値として表示した上で、エラーが発生したときにはエラー発生時に入力していた値を表示するという形にすることで、ユーザーのストレスを軽減することができます。

その記述の仕方は次のようになります。

編集・更新

edit.blade.php
<input type="text" name="menu_name" value="{{ old('menu_name', $menu->menu_name) }}">

第一引数は新規登録時と同じname属性値ですが、第二引数に$menu->menu_nameと記述することで、デフォルト値としてデータベースの値を表示することができます。

おまけ

textareaの場合

create.blade.php
<textarea name="description">{{ old('description') }}</textarea>
edit.blade.php
<textarea name="description">{{ old('description', $menu->description) }}</textarea>
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2