37
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravelで前回の入力値を表示する方法

Posted at

Laravelで前回の入力値を表示する方法を紹介します。

#サンプルblade
この状態だと、入力エラーになっても、前回の入力値は表示されません。

<div class="wrapper">
    @if(count($errors) > 0)
        <ul class="bg-danger">
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    @endif

    <form action="{{ route('sample.store') }}" method="post">
        @csrf
        <div class="form-group">
            <label>名称<span class="required">※必須</span></label>
            <input type="text" name="name" class="form-control">
        </div>

        <button type="submit" class="btn btn-success">登録</button>
    </form>
</div>

#oldメソッド

ここで活躍するのが、oldメソッドです!

<input type="text" name="name" class="form-control" value="{{ old('name') }}">

oldの引数に、対象のhtmlのname属性を指定すると、前回の入力値を表示してくれます。
でも編集のときとか、すでに保存されている値がある場合は、どうしたらいいんや?

実はoldメソッドは第二引数にデフォルトの値を受け取ることができます。

<input type="text" name="name" class="form-control" value="{{ old('name', 'デフォルトの値') }}">

では、実践向きに記述しますね。
新規登録画面と編集画面は同じbladeファイルを使い回すと思いますので、それに対応したいと思います。

まずは、bladeのinputのvalueを以下のようにします。

<input type="text" name="name" class="form-control" value="{{ old('name', isset($defaultName) ? $defaultName : '') }}">

Controllerのcreateメソッド

public function create()
{
    return view('sample');
}

createメソッドのrouteにアクセスすると、入力欄は空欄です。

Controllerのeditメソッド

public function edit($id)
{
    return view('sample')->with([
        'defaultName' => 'デフォルトの名称',
    ]);
}

editメソッドのrouteにアクセスすると、入力欄には「デフォルトの名称」が表示されます。

ちょいと解説

value="{{ old('name', isset($defaultName) ? $defaultName : '') }}"

第一引数には、htmlのname属性を入れます。こちらは、入力エラーがあった場合に表示されます。
第二引数は、初期表示の場合に表示されます。
新規登録時は$defaultNameの変数が設定されていないので、三項演算子の後半に行って、空になります。
編集時は、$defaultNameの変数が設定されているので、参考演算子の前半に行って、その値が表示されます。

#まとめ
素phpユーザーから、Laravelを始めて、最初につまづいたのがここだった。。
そのうちチェックボックス・ラジオボタンのoldの値の表示の仕方もまとめたい。

37
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?