bladeのフォーム欄で使うold関数 | laravel

Laravel

最近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が必ずあるとも限らないので、このように書くと臨機応変にできますね。

Null 合体演算子

タイトルとURLをコピーしました