【laravel】配列のチェックボックスにcheckedをつける

フォームのチェック保持や編集時にcheckedを入れて表示する際に、つまづいたので。

今回は、記事を新規登録する際に

カテゴリー項目を表示(カテゴリーテーブルから取得)

新規登録

@foreach ($categories as $category)
 <div class="form-check">
  <input name="category[{{$category->id}}]" type="checkbox" value="{{ $category->id }}" {{ old('category.'.$category->id) == $category->id) ? 'checked' : '' }}>
  <label class="form-check-label">{{ $category->name }}</label>
 </div>
@endforeach

category配列にして、キーをcategoryのidにしておく

{{ (old(‘category.’.$category->id) == $category->id) ? ‘checked’ : ” }}

old(‘category.’.$category->id)と$category->idが同じ場合は、checkedをつける

配列のチェックボックス

編集時

@foreach ($categories as $category)
 <div class="form-check">
  @if ($post->postCategories->contains('id', $category->id))
    <input name="category[]" type="checkbox" value="{{ $category->id }}" checked>
  @else
    <input name="category[]" type="checkbox" value="{{ $category->id }}">
  @endif
  <label class="form-check-label">{{ $category->name }}</label>
 </div>
@endforeach

contains( ) メソッドを使って、指定したidが含まれているか確認

$post->postCategories->contains(‘id’, $category->id)

ある場合は、checkedを入れたinputを表示する

配列のチェックボックス

laravelのドキュメントに詳しく書かれています「 contain メソッド 」

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA