我有一个edit.blade.php(Post),其中有多个应该显示所有类别(类别)的selectpicker,并且其中一个被选中。经过研究后,我发现此方法可以使其起作用,但它说in_array()期望参数2为数组,给定null
<select class="form-control selectpicker" multiple name="category[]" title="Categoría">
@foreach($categories as $category)
<option value="{{ $category->id }}" {{ (in_array($category, old("category")) ? "selected":"") }} >{{ $category->name }}</option>
@endforeach
</select>
我从我的PostController发送来自特征(即$ categories)的所有现有类别,而发布的类别位于$ post-> categories上。
编辑:设法得到我想要的东西,但是现在我得到了值的多个副本,可以避免这种情况吗?
<select class="form-control selectpicker" multiple name="category[]" title="Categoría">
@foreach ($categories as $category)
@foreach ($post->categories as $postCategory)
@if ($postCategory->id == $category->id)
<option selected value="{{ $category->id }}">{{ $category->name }}</option>
@else
<option value="{{ $category->id }}">{{ $category->name }}</option>
@endif
@endforeach
@endforeach
</select>
您可以像这样使用帖子类别,获取ID,并检入数组,或者从控制器中,也可以传递帖子类别的数组,
@foreach ($categories as $category)
<option @if(in_array($category->id, $post->categories->pluck('id')->toArray())) selected
@endif value="{{ $category->id }}">{{ $category->name }}</option>
@endforeach
都是对象不能使用in_array in_array()期望参数2为数组,给定对象
您可以使用toArray()$ post-> categories-> pluck('id')-> toArray()将对象转换为数组,这会将对象转换为数组
可以完美地工作,但是我不懂代码,如果您能解释一下,那就太好了,谢谢!
您可以查看laravel帮助程序laravel.com/docs/5.8/helpers,以查看帮助程序功能@if(in_array($ category-> id,$ post-> categories-> pluck('id')-> toArray()))这里我在刀片文件中使用if条件,所以它的@if和$ category-> id是类别对象的ID,$ post-> categories-> pluck('id')-> toArray()是代码,首先是$ post-> categories,为您提供对象中的帖子类别,然后我使用pluck('id')从categoris中获取唯一的ID,然后再使用toArray( )将其转换为数组,以便我可以检查类别ID是否可用,希望它对您有所帮助