最近Laravelのことが少しわかってきて楽しくなってきました。
フォームに使うold関数覚書!
old関数でエラー時も直前の入力値を保持させる
例えばユーザープロフィールを更新するフォームがあったとします。
inputタグ
<input type="text" name="name" class="form-control" value="{{ old('name', $user->name) }}">
valueの中にold関数を使い、第一引数が属性値のname、第二引数にはデフォルト値として現在登録されているユーザー名を渡しています。
textareaタグ
<textarea name="profile" class="form-control" id="" cols="30" rows="6" style="display:block; width: 100%;">{{ old('profile', $user->profile) }}</textarea>
プロフィールなどを記述するテキストエリアも同じく。
old関数で第一引数にname属性のprofile、第二引数に現在登録されているプロフィール情報を渡しています。
ラジオボタン
<input type="radio" name="lesson_id" value="{{ $lesson->id }}" {{(old('lesson_id')== $lesson->id) ? "checked" : "" }} >
foreachの中で使ったので == で比較する値に変数を使っています。
これでエラー時も値を保持してくれます!
これでエラー時も値を保持してくれます!
php7からの新構文、Null合体演算子
こちらも同じくold関数を使っています。が、ちょっと違う書き方とメリットがあります。
??を使ったNull合体演算子
<input type="text" name="title" class="form-control" required value="{{ $article->title ?? old('title') }}">
こちらのinputタグもvalue欄でold関数を使っています。
value内だけを抜き出すと以下ですが、
{{ $article->title ?? old('title') }}
これは
$article->title があればそれを使う。なければ old(‘title’) を使う。
という意味になります。
このbladeを呼び出す際に$article変数が必ず渡っていればいいのですが、テンプレートを使いまわしている場合などに$articleが必ずあるとも限らないので、このように書くと臨機応変にできますね。