【发布时间】:2019-07-03 14:45:06
【问题描述】:
我有一个 edit.blade.php(Post),我有一个多个选择器,它应该显示所有类别(Category),并且已经选择了一个。经过一番研究,我发现这种方法可以使它起作用,但它说 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 发送一个 trait(即 $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>
【问题讨论】:
-
这里的
$category是对象而非数组类型。您现在不能使用 in_array。让我们尝试制作一个数组 category_id 来比较
标签: php laravel-blade laravel-5.8