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

laravel

laravel の構文を把握できてないので、何を書くのもあれこれ調べないと大変なくらいのスキル感です。

そういう人に多分役に立つメモ。

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第二引数に現在登録されているプロフィール情報を渡しています。

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をコピーしました