役立つ情報
登録日: 2025-03-06   最終更新日: 2025-03-23

Laravel チェックボックス old 設定方法

Laravelの old() 関数を使用して、チェックボックスの値を保持する方法を説明します。

old() を使ったチェックボックスの設定

チェックボックスは checked 属性を old() で制御します。


<input type="checkbox" name="agree" value="1" {{ old('agree') ? 'checked' : '' }}>

ポイント

  • old('agree') が true の場合、checked が追加される
  • checked があると、チェックされた状態になる

フォーム送信時にチェックボックスを old() で保持

以下のように checked の有無を old() で判定します。


<form method="POST" action="{{ route('submit') }}">
    @csrf

    <label>
        <input type="checkbox" name="subscribe" value="1" {{ old('subscribe') ? 'checked' : '' }}>
        メールマガジンを購読する
    </label>

    <button type="submit">送信</button>
</form>

動作

  • フォームを送信し、バリデーションエラーなどで再表示されたときに、チェックボックスの状態を維持

チェックボックスのデフォルト値を設定

もし 最初からチェックされた状態にしたい 場合は、old() のデフォルト値を true にできます。


<input type="checkbox" name="subscribe" value="1" {{ old('subscribe', 1) ? 'checked' : '' }}>

動作

  • old('subscribe') の値が null(初回表示時)なら、1 をデフォルト値として使用
  • ユーザーが一度送信して subscribe をオフにしても、その状態を保持

複数のチェックボックスを扱う

複数のチェックボックスを配列として処理する場合は、old('name.*') を使います。


<label>
    <input type="checkbox" 
           name="options[]"
           value="option1"
           {{ in_array('option1', old('options', [])) ? 'checked' : '' }}>
    オプション1
</label>

<label>
    <input type="checkbox"
           name="options[]"
           value="option2" 
           {{ in_array('option2', old('options', [])) ? 'checked' : '' }}>
    オプション2
</label>

<label>
    <input type="checkbox"
           name="options[]"
           value="option3"
           {{ in_array('option3', old('options', [])) ? 'checked' : '' }}>
    オプション3
</label>

動作

  • old('options', []) が配列で返るので、in_array() を使ってチェック済みか確認
  • 送信後、選択されたチェックボックスのみ保持

コントローラーでの処理

チェックボックスがオフの時、リクエストには送信されないため、デフォルト値を設定すると便利です。


public function store(Request $request)
{
    $validated = $request->validate([
        'subscribe' => 'nullable|boolean',
        'options' => 'nullable|array',
        'options.*' => 'string',
    ]);

    $subscribe = $request->has('subscribe') ? 1 : 0; // チェックがなければ0を設定

    return back()->withInput(); // old()で値を保持
}

動作

  • has('subscribe') を使うことで、未選択時に null にならず、0 をセットできる

まとめ

シナリオ 設定方法
シンプルなチェックボックス {{ old('agree') ? 'checked' : '' }}
デフォルトでチェックあり {{ old('agree', 1) ? 'checked' : '' }}
配列のチェックボックス {{ in_array('option1', old('options', [])) ? 'checked' : '' }}
未選択時のデフォルト値 has('subscribe') ? 1 : 0

Copyright 役立つ情報.net