Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

posted at

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

はじめに

バリデーションエラーになってしまった場合に、入力した値が消えてしまうと、ユーザーに再び全ての値を打ち直させるのことになってしまい、ユーザーに過度の負担を強いてしまいますよね。
そこで、入力した値を保持し、エラーが発生した部分だけを書き換えれば済むように、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>
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?