【问题标题】:Can't send collection to bootstrap-select in Laravel form无法以 Laravel 形式将集合发送到 bootstrap-select
【发布时间】:2018-07-23 19:53:54
【问题描述】:

这是我创建的编辑表单

@extends('main')

@section('title', 'Edit Post')

@section('content')

    <form class="form-group" action="/categories/update" method="POST">
        {{csrf_field()}}
        <input name="_method" type="hidden" value="PUT">

        <label for="category_id" id="category_id">Select Category</label>
        <select class="form-control" id="category_id" style="height:auto;" name="category_id">
            @foreach($categories as $category)
                <hr class="custom-hr-heading"/>
                <option value="{{$category->id}}" {{($category->id == $post->category->id)?"selected='selected'":""}}>
                    {{$category->name}}
                </option>
            @endforeach
        </select>

        <label for="title" class="mt-2" name="title" id="title">Your Post Title</label>
        <input type="text" class="form-control mb-2" value="{{$post->title}}" name="title" id="title">

        <textarea class="form-control" name="body">{{$post->body}}</textarea>

        <label for="tags" id="tags" name="tags">Select Tags..</label>

        <select class="selectpicker mt-3" id="tags[]" name="tags[]" multiple="multiple">
            @foreach($tags as$tag)
                <option value="{{$tag->id}}">{{$tag->name}}</option>
            @endforeach
        </select>
        <br/>
        <button type="submit" class="btn mt-3 btn-success btn-sm">Update</button>

    </form>

    <script type="text/javascript">
        tinymce.init({
            selector: 'textarea',
            theme: 'modern',
            height: 300
        });

        $('.selectpicker').selectpicker({
            style: 'btn-info'
        });
    </script>
@stop



Controller
    public function edit($id)
        {
            $post = Post::find($id);
            $categories = Category::orderBy('name', 'asc')->get();
            $tags = Tag::orderBy('name', 'asc')->get();
            return view('posts.edit', compact('post', 'categories', 'tags'))
        }

我得到一个主题选择框,它只显示未选择任何内容。我是否正确地将标签集合传递给选择框?

我正在使用 Laravel 5.5、PHP 7.2 和 Bootstrap 4。

我已经尝试通过 CDN 和本地文件进行引导选择。

【问题讨论】:

    标签: php jquery twitter-bootstrap laravel bootstrap-select


    【解决方案1】:

    您缺少space

    更改:

        @foreach($tags as$tag)
    

    收件人:

        @foreach($tags as $tag)
    

    【讨论】:

    • 很好发现但结果相同。
    • 我已将其添加到原帖中。
    【解决方案2】:

    根据Bootstrap 4's documentation,这是一个简短的属性,而不是名称-值对,所以我会这样做(并稍微清理一下):

    <select class="form-control" id="category_id" style="height:auto;" name="category_id">
            <option value="">Choose an Option</option>
            @foreach($categories as $category)
                <hr class="custom-hr-heading"/>
                <option value="{{ $category->id }}" @if($category->id == $post->category->id) selected @endif >
                    {{ $category->name }}
                </option>
            @endforeach
    </select>
    

    【讨论】:

      【解决方案3】:

      问题实际上是两个问题。 Bootstrap 4(最终版)支持仅在最新的 bootstrap-select beta 版本中可用 here

      我的代码也有点过时了。这是最终的工作代码。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-08
        • 2018-09-23
        • 1970-01-01
        • 2018-08-01
        • 2021-07-20
        • 1970-01-01
        • 1970-01-01
        • 2017-09-15
        相关资源
        最近更新 更多