Laravel チェックボックス1つで true/false を表す方法

2024/03/17に公開

Laravel を書く際に どうやって書くんだっけ…? となることがあるので備忘録です。

チェックボックスが1つだけあってチェックの有無で状態を表したいシチュエーションを想定しています。

実装イメージ

注意点

チェックボックスはチェックが入っている (true) 時のみ値を持つため、単純に true/false で分岐させることができません。
そのため、チェックが入っていない (false) の時は別途制御が必要になります。

コントローラー側

フォームリクエスト内で↓を記述してください。
これで値を持っていない (false) 時は ['{ カラム名 }' => '0'] という値を明示的に追加してくれます。

protected function prepareForValidation(): void
{
    if (!$this->has('{ カラム名 }')) {
        $this->merge(['{ カラム名 }' => '0']);
    }
}

Blade 側

@checked(old('{ カラム名 }', ${ モデルインスタンス }))
GitHubで編集を提案

Discussion