前提・実現したいこと
現在、LaravelのBladeにて表題の通り、Bladeでチェックを付けたチェックボックスのチェック状態を保持する機能を実装したいのですが、どうしても詰まってしまっています。
具体的には、検索画面で、複数チェックを付けた状態で画面遷移した際にそれぞれチェックを付けた状態にしたいということです。
何かしらのアドバイスをいただけると助かります。よろしくお願いいたします。
発生している問題・エラーメッセージ
表題の通り、検索画面でチェックしたチェックボックスの状態を保持するために、bladeの@foreach内で@if文を書くときに{{ $hobby->id }}のように値を渡したいのですが、{{ $hobby->id }}だと「該当のソースコード」のエラーになってしまいます。
該当のソースコード
PHP
1<!-- 補足。このコメントアウトの処理はController側で行っています。 2※検索条件の取得 3$searchCondition[] = array(); 4$searchCondition = [ 5 'hobbies' => $request->input('hobby'), 6]; 7 8※DBから取得した趣味テーブルのデータを$hobbiesとして扱っている。入っているデータは以下の通り。 9$hobbies[] = array(); 10$hobbies = [ 11 'id' => ['1', '2', '3'・・・・], 12 'name' => ['ゲーム', '映画', 'スポーツ'・・・] 13]; 14--> 15 16<!-- Blade --> 17<div> 18@foreach($hobbies as $hobby) 19 <input id="hobbies{{ $hobby->id }}" type="checkbox" value="{{ $hobby->id }}" name="hobby[]" @if(isset($searchCondition['hobbies']) && array_search({{ $hobby->id }}, $searchCondition['hobbies'])) checked @endif/> 20 <label class="search-checkbox" for="hobbies{{ $hobby->id }}">{{ $hobby->name }}</label> 21@endforeach 22<div> 23 24⇒以下のエラーになってしまう。 25 26Symfony\Component\Debug\Exception\FatalThrowableError 27syntax error, unexpected '<' (View: C:\xampp\htdocs(※プロジェクト名)\resources\views\(※質問対象のblade名).blade.php) 28 29おそらく、@if @endifの中は通常のphpのコードで書く必要があり、{{ $hobby->id }}の「>」が反応してくれない模様。 30
試したこと
★array_search({{ $hobby->id }}, $searchCondition['hobbies']))の{{ $hobby->id }}を$hobby['id']にする。
<!-- Blade --> <div> @foreach($hobbies as $hobby) <input id="hobbies{{ $hobby->id }}" type="checkbox" value="{{ $hobby->id }}" name="hobby[]" @if(isset($searchCondition['hobbies']) && array_search($hobby['id'], $searchCondition['hobbies'])) checked @endif/> <label class="search-checkbox" for="hobbies{{ $hobby->id }}">{{ $hobby->name }}</label> @endforeach <div>⇒bladeで2つ上選択した際に、$hobby->idが一番大きいチェックボックスのみチェック状態が保持されてしまう。
1つのみ選択した際にチェック状態が保持されない&2つ以上選択した際にチェックを付けたすべてのチェックボックスのチェック状態を保持することができていない状態です。
補足情報(FW/ツールのバージョンなど)
【バージョン】
〇Laravel Framework 6.20.16
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/12 08:41 編集