Php 如何使用laravel中的旧值填充多选择器选择器
我有一个edit.blade.php(Post),其中我有一个多选择器,它应该显示所有类别(Category),并且总是选择哪个类别。经过一些研究,我发现这个方法可以使它工作,但它说in_array()希望参数2是数组,如果给定nullPhp 如何使用laravel中的旧值填充多选择器选择器,php,laravel-blade,laravel-5.8,Php,Laravel Blade,Laravel 5.8,我有一个edit.blade.php(Post),其中我有一个多选择器,它应该显示所有类别(Category),并且总是选择哪个类别。经过一些研究,我发现这个方法可以使它工作,但它说in_array()希望参数2是数组,如果给定null <select class="form-control selectpicker" multiple name="category[]" title="Categoría"> @foreach($categories as $category)
<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>
@foreach($categories作为$category)
{{$category->name}
@endforeach
我正在从我的PostController发送一个trait中的所有现有类别(即$categories),并且post拥有的类别位于$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>
@foreach($categories作为$category)
@foreach($post->categories as$postCategory)
@如果($postCategory->id==$category->id)
{{$category->name}
@否则
{{$category->name}
@恩迪夫
@endforeach
@endforeach
您可以这样使用,对于帖子类别,提取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
@foreach($categories作为$category)
id,$post->categories->PULL('id')->toArray())已选中
@endif value=“{{$category->id}}”>{{{$category->name}
@endforeach
此处的$category
是对象而不是数组类型。现在不能在数组中使用。让我们尝试制作一个数组类别\u id来进行比较,因为对象不能在\u array中使用\u array in\u array()期望参数2是数组,对象给定您可以使用toArray()$post->categories->pulk('id')->toArray()将对象转换为数组,这将把对象转换为arrayworks perfect,但我不理解代码,如果你能解释一下就好了,谢谢!你可以看看laravel助手,看看助手函数,@if(在数组($category->id,$post->categories->pulk('id')->toArray())这里我使用的是刀片文件中的if条件,所以它的@if和$category->id是类别对象的id,$post->categories->pulk('id')->toArray(),是代码,首先,$post->categories,在object from中为您提供post类别,然后我使用Pull('id')从类别中获取唯一的id,然后使用toArray()将其转换为数组,以便检查类别id是否可用,希望对您有所帮助