【市場価値がわかる】エンジニア転職におすすめなサイト

Laravelのビューでold関数を使い、フォームに値を残す方法

20代の転職ならマイナビジョブ

Laravelで編集画面の時にデータベースにある値をフォームに表示させたり、バリデーションで引っかかった時にフォームに値を残しておくにはどうしたらいいんだろう…?

こんな疑問を解決します。

結論、old関数を使ってフォームに値を残しておくことができます。

この記事で実装する内容↓

編集画面に遷移時、データベースの値を表示させる

入力した値があったときにバリデーションに引っかかっても、入力した値をold関数を使って残す

Contents

動作確認

Docker 20.10.7
PHP 7.4.22
Laravel 8.53.1
mySQL 5.7
データベースのツール phpmyadmin

入力した値をold関数を使って残す

Laravelでold関数を使えば、もしバリデーションに引っかかっても入力した値を保持できます。

      <div class="form-group">
        <label for="book_min_price">{{ __('本の最低価格') }}</label>
        <input type="text" class="form-control name="book_min_price" id="book_min_price" value="{{ old('book_min_price') }}">
        @if ($errors->has('book_min_price'))
          <span class="invalid-feedback" role="alert">
            {{ $errors->first('book_min_price') }}
          </span>
        @endif
      </div>

150と入力し、更新ボタンをおす。

バリデーションに引っかかったときにold関数を使っていない場合は、入力した値を保持できない。

しかし、value値にold関数を使えば、入力した値を保持できる。

ポイントはvalueの値をold(‘name属性の値’)とすることです。

これにより、フォームの値を保持できます。

このフォームのname属性の値は、book_min_priceです。
なので、value値にold(‘book_min_price’)と書くことで、前回入力した値を保持できるってわけです。

old関数は、ビューだけでなくコントローラーでも使えます。

編集画面に遷移時、データベースの値も表示させる

現在のコードは以下のようにold関数を使って入力した値を保持できるようにしています。

      <div class="form-group">
        <label for="book_min_price">{{ __('本の最低価格') }}</label>
        <input type="text" class="form-control name="book_min_price" id="book_min_price" value="{{ old('book_min_price') }}">
        @if ($errors->has('book_min_price'))
          <span class="invalid-feedback" role="alert">
            {{ $errors->first('book_min_price') }}
          </span>
        @endif
      </div>

しかし、これだけでは、編集画面に遷移したときにフォームは値が何もない状態です。

編集画面なので、すでにデータは登録してありデータベースにもデータが保存されていますよね。

なので、編集画面に遷移したときの初期表示は、データベースの値が表示されていることが望ましいです。

実装方法は以下です。

コントローラーで、$book = Book::find($id);と定義し、ビューに渡している
   
      <div class="form-group">
        <label for="book_min_price">{{ __('本の最低価格') }}</label>
        <input type="text" class="form-control name="book_min_price" id="book_min_price" value="{{ old('book_min_price', $book->book_min_price) }}">
        @if ($errors->has('book_min_price'))
          <span class="invalid-feedback" role="alert">
            {{ $errors->first('book_min_price') }}
          </span>
        @endif
      </div>

このようにold(‘name属性’, データベースの値)と書きます。

こうすることで、入力した値を保持する場合はold(‘name属性’)がフォームに表示され、初期表示の時はデータベースの値である$book->book_min_priceが呼ばれます。

【まとめ】Laravelのビューでold関数を使い、フォームに値を残す

今回はLaravelでold関数を用いる方法を解説しました。

old関数を使えば、入力値の保持などに役立つため、ぜひ覚えておきましょう!

このブログでは他にも実務で役立つLaravelの記事を書いているので合わせてチェックしてください。

20代の転職ならマイナビジョブ

現役エンジニアに相談するならMENTA(おすすめ)

スキルを売り買いするならココナラ

動画教材ならUdemy

コメント

コメントする

CAPTCHA


Contents
閉じる