投稿時にcheckをつけた項目だけを編集画面でもcheckをつけて表示できるようにするにはどうすれば良いでしょうか?
新規投稿画面で以下のような項目にcheckをつけました。
投稿の編集画面でも同じ状態で表示したいのですが、「施工事例1」にcheckを入れたのに「施工事例2」にもcheckがついて表示されてしまいます。
投稿の編集画面のviewファイルでは以下のように書いています。
PHP
1<li class="info-category-list__item"> 2 @if (!is_null($post->jirei)) 3 <input id="example1" class="info-category-list__item--checkbox" 4 type="checkbox" name="jirei[]" value="1" checked> 5 @else 6 <input id="example1" class="info-category-list__item--checkbox" 7 type="checkbox" name="jirei[]" value="1"> 8 @endif 9 <label for="example1" class="info-category__item--label">施工事例1</label> 10</li> 11<li class="info-category-list__item"> 12 @if (!is_null($post->jirei)) 13 <input id="example2" class="info-category-list__item--checkbox" 14 type="checkbox" name="jirei[]" value="2" checked> 15 @else 16 <input id="example2" class="info-category-list__item--checkbox" 17 type="checkbox" name="jirei[]" value="2"> 18 @endif 19 <label for="example2" class="info-category__item--label">施工事例2</label> 20</li>
投稿編集のコントローラーメソッドは以下のように書いています。
PHP
1public function update(Request $request, Post $post){ 2 $oshirase=request()->input('oshirase'); 3 $jirei_flag=request()->input('jirei-flag'); 4 $jirei=request()->input('jirei'); 5 $inputs = request()->validate([ 6 'title'=>'required|max:255', 7 'body'=>'required|max:1000', 8 ]); 9 10 $post->title=$request->title; 11 $post->body=$request->body; 12 $post->oshirase=$oshirase; 13 $post->jirei_flag=$jirei_flag; 14 $post->jirei=json_encode($jirei); 15 $post->user_id=auth()->user()->id; 16 $post->save(); 17 return redirect('mypage/dashboard')->with('successMessage', 'お知らせの更新が完了しました。'); 18 19}
投稿の編集画面のviewファイルでdd($post); をすると以下のように情報が取得できています。
「施工事例1」「施工事例2」の親カテゴリーに当たる「施工事例」('jirei_flag'カラム)はcheckをつけると”on”で渡されるので投稿の編集画面のviewファイルで以下のように書いて、編集画面でcheckの有無が取得できました。
PHP
1<input id="info-1" class="item info-category-list__item--checkbox" 2 type="checkbox" name="oshirase" 3 @if (old('oshirase', $post->oshirase) == 'on') checked @endif>
しかし、子カテゴリー('jirei'カラム)の「施工事例1」「施工事例2」.... は今後増えていく予定なのでコントローラーでjson_encode()しております。
"jirei"カラムがnullか?の判定だと全てのname="jirei"にcheckがついてしまうのは理解できたのですが、どうすればcheckをつけた"jirei"カラムにだけchecked をつけられるでしょうか?

回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。