从数组中将多个标签复选框设置为“已选择”

时间:2021-02-01 14:42:00

标签: php laravel

在简单的事情上挣扎!

我是 Laravel 8 的新手,有许多复选框是动态创建的,将它们的值保存到数组中。当我想将以前的活动选项标记为“已选择”时,就会出现问题。

问题似乎出在 in_array 参数以及我创建数组的位置..

@php 
    $currentTags = $prop->tags->pluck('id'); 
@endphp   

@foreach($tags as $tag)
    <div class="custom-control custom-switch">
        <input type="checkbox"
            @if(in_array($tag->id, $currentTags)) selected @endif 
            class="custom-control-input" 
            onclick="$(this).val(this.checked ? {{ $tag->id }} : 0)" 
            id="tags[{{ $tag->id }}]" 
            name="tags[{{ $tag->id }}]">
        <label class="custom-control-label" for="tags[{{ $tag->id }}]">{{ $tag->name }}</label>
    </div>
@endforeach 

错误 类型错误 in_array(): 参数 #2 ($haystack) 必须是数组类型,Illuminate\Support\Collection

1 个答案:

答案 0 :(得分:0)

正如 @El_Vanja 评论的那样:

<块引用>

错误很明显——它需要一个数组,但你给了它一个 Illuminate\Support\Collection 类型的对象。如果您查看该类的文档,您会看到它有一个名为 all 的方法,可以将集合项作为数组进行检索。

还应将 SELECT DISTINCT indident_id FROM act_reg a1 WHERE sd.SERV_DEPT_N = 'B' AND EXISTS ( SELECT 1 FROM act_reg a2 where a2.SERV_DEPT_N = 'A' AND a2.date_actioned < a1.date_actioned AND a1.indident_id = a2.indident_id ) 更改为 selected

改变这个

checked

@if(in_array($tag->id, $currentTags)) selected @endif

@if(in_array($tag->id, $currentTags->toArray())) checked @endif