使用Multiselect

时间:2018-08-26 21:43:18

标签: php arrays laravel select collections

Hello Stackoverflow社区,

我想知道您是否可以解决我和朋友似乎无法解决的前几天困扰我的问题。

我目前有两个模型-新闻通讯和标签。新闻通讯包含各种信息,特别是一列称为标签,当在前端存储和展开所选值时,这些标签会内嵌这些值。

我正在处理的特定部分是编辑功能。

当前,我的编辑功能如下所示

 public function edit($id, Tag $tag)
{

    $tags = Tag::all();
    $newsletter = Newsletter::find($id);
    $tagged = $newsletter->tags; 
    $selected = explode(",", $tagged);

    // dd($selected);
    return view('newsletter.edit', compact('newsletter', 'tags', 'selected'));
}

我的前端编辑刀片文件如下:

 <select name="tags[]" class="form-control" multiple="multiple" id="tags">         
        @foreach ($tags as $tag)
           <option value="{{ $tag->name}}" {{ (in_array($tag->name, $selected, true)) ? ' selected' : '' }}> {{$tag->name}}</option> 
        @endforeach
     </select>

但是-它仅传递一个值,并且尽管selected传递了值的数组,但似乎并没有检查所有值以使所有选项都被选中。

因此,仅选择了三个选项之一。

我知道我可能不会像大多数人使用数据透视表那样做,我一直在试图了解一些基础知识,并且在我被困在这里之前以我知道如何使用它的方式来玩耍。

1 个答案:

答案 0 :(得分:0)

我使用@if @endif代替? :声明。

尝试这样更改代码

<select name="tags[]" class="form-control" multiple="multiple" id="tags">         
    @foreach ($tags as $tag)
       <option value="{{ $tag->name}}" @if(in_array($tag->name, $selected, true)) selected @endif }}> {{$tag->name}}</option> 
    @endforeach
</select>