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