Laravel チェックボックスのchecked="checked"はどうやって表示させるの?


結論

これ↓


blade

<input type="checkbox" name="fluits[]" value="1" {{ is_array(old("fluits")) && in_array("1", old("fluits"), true)? 'checked="checked"' : '' }}>



以下結論に至った流れ


はじめに

・laravelのview(~~~.blade.php)です

・どうしてもinputタグを使って今回の問題をクリアしたい

・Form::checkbox()メソッドは使いたくない

・チェックボックスは複数選択されるものとする


リダイレクトした際にチェックされない


blade


<input type="checkbox" name="fluits[]" value="1" {{ old("fluits") === "1"? 'checked="checked"' : '' }}>
<!-- nameを配列[]にすることで、複数選択された場合でも値が全て取得できる -->


{{}}の中は三項演算子


blade


{{ old("fluits") === "1"? 'checked="checked"' : '' }}
<!-- ↑はつまりこういう↓こと -->
@if(old("fluits") === "1")
checked='checked'
@else

@endif
<!-- old()で直前の入力値を取得して値と比較し、trueならchecked="checked"を返す -->


しかし取得した値は配列なのでこれじゃうまくいかない;


in_array()で配列に値があるかチェックする


blade


<input type="checkbox" name="fluits[]" value="1" {{ in_array("1", old("fluits"), true)? 'checked="checked"' : '' }}>

これだとold()で取得した値がNULLのとき怒られる;

【in_array() expects parameter 2 to be array, null given】


is_array()、in_array()を併用して解決


blade

<input type="checkbox" name="fluits[]" value="1" {{ is_array(old("fluits")) && in_array("1", old("fluits"), true)? 'checked="checked"' : '' }}>


今のところこれしか思いつかないよ(´・ω・`)