old('name属性', 'デフォルト値')を使う
old関数とは
Laravelが用意してくれているグローバルなヘルパ関数
バリデーションなどで画面に戻されたときに、直前に入力された値を表示することができる
第一引数にname属性、第二引数 (省略可)にデフォルト値をいれる
<!-- テキスト -->
<input type="text" name="content" value="{{ old('content') }}" />
<!-- ラジオボタン -->
<input type="radio" name="gender" value="male" {{ old('gender') === 'male' ? 'checked' : '' }} />
<!-- チェックボックス -->
<input type="checkbox" name="color" value="red" {{ old('color') === 'red' ? 'checked' : '' }} />
<!-- セレクトボックス -->
<select name="fruits">
<option value="lemon" {{ old('fruits') === 'lemon' ? 'selected' : ''>🍋</option>
</select>
<!-- テキストエリア -->
<textarea name="memo">{{ old('memo') }}</textarea>
old関数はまだ何も入力されていない場合はnullを返してくれるので
そのまま使用しても無問題
編集画面では、デフォルトは登録されてる値にしたい・・
こうする
<?php
// 省略
public function form(Data $data)
{
return view('form', compact('data'));
}
<!-- テキスト -->
<input type="text" name="content" value="{{ old('content', $data->content) }}" />
<!-- ラジオボタン -->
<input type="radio" name="gender" value="male" {{ old('gender', $data->gender) === 'male' ? 'checked' : '' }} />
<!-- チェックボックス -->
<input type="checkbox" name="color" value="red" {{ old('color', $data->color) === 'red' ? 'checked' : '' }} />
<!-- セレクトボックス -->
<select name="fruits">
<option value="lemon" {{ old('fruits', $data->fruits) === 'lemon' ? 'selected' : ''>🍋</option>
</select>
<!-- テキストエリア -->
<textarea name="memo">{{ old('memo', $data->memo) }}</textarea>
$data
にはテーブルのEloquentデータが入ってる前提
Laravelのフォームでバリデーション引っかかったときに直前に入力された値を保持する