在简单的事情上挣扎!
我是 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
答案 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