温馨提示:本文翻译自stackoverflow.com,查看原文请点击:php - How to populate a multiple selectpicker with old value in laravel
laravel-5.8 php laravel-blade

php - 如何在Laravel中使用旧值填充多个选择器

发布于 2020-03-27 11:26:48

我有一个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>

查看更多

查看更多

提问者
Cristian
被浏览
48
Nazmul Abedin 2019-07-11 09:01

您可以像这样使用帖子类别,获取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