✅
Laravel チェックボックス1つで true/false を表す方法
Laravel を書く際に どうやって書くんだっけ…? となることがあるので備忘録です。
チェックボックスが1つだけあってチェックの有無で状態を表したいシチュエーションを想定しています。
実装イメージ
注意点
チェックボックスはチェックが入っている (true
) 時のみ値を持つため、単純に true/false
で分岐させることができません。
そのため、チェックが入っていない (false
) の時は別途制御が必要になります。
コントローラー側
フォームリクエスト内で↓を記述してください。
これで値を持っていない (false
) 時は ['{ カラム名 }' => '0']
という値を明示的に追加してくれます。
protected function prepareForValidation(): void
{
if (!$this->has('{ カラム名 }')) {
$this->merge(['{ カラム名 }' => '0']);
}
}
Blade 側
@checked(old('{ カラム名 }', ${ モデルインスタンス }))
Discussion