write ahead log

ロールフォワード用

Laravelでフォームのチェックボックスを作るときにoldを使いたい時

なんかいつも忘れるというかハマるんだよね.

is_doneはDB上はbooleanとして.

<input type="hidden" name="is_done" value="0">
<input type="checkbox" name="is_done" value="1" id="is_done"
@if (old('is_done', $production_plan->is_done ? '1' : '0') === "1")
checked
@endif
>
<label for="is_done">完了 </label>

テーブルみたいな明細構造でも同じ考え方で大丈夫.(当たり前だけど)

ここでは$loop->index使った例.

<input type="hidden" name="is_done[{{ $loop->index }}]" value="0">
<input type="checkbox" name="is_done[{{ $loop->index}}]" value="1"
    @if (old('is_done.' . $loop->index, $plan->is_done ? '1' : '0') === '1')
        checked
    @endif
>

追記.

いちいちhidden入れるのも面倒だし, でもデフォルトでtrueにしたいチェックボックスの場合どうしようかなぁと思ってたんだけど, $errorsを使うというやり方があった.

<input type="checkbox" name="is_done" {{ old('is_done.' $loop->index) || !$errors->any() ? 'checked' : '' }}>