无法以 Laravel 形式将集合发送到 bootstrap-select
Can't send collection to bootstrap-select in Laravel form
这是我创建的编辑表单
@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'))
}
我得到一个主题 select 框,但什么也没说 selected。我是否将标签集合正确传递到 select 框?
我正在使用 Laravel 5.5、PHP 7.2 和 Bootstrap 4。
我已经尝试 bootstrap-select 通过 CDN 和本地文件。
您缺少 space
变化:
@foreach($tags as$tag)
收件人:
@foreach($tags as $tag)
根据 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>
问题实际上是两个问题。
Bootstrap 4(最终)支持仅在最新的 bootstrap-select 测试版 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>
这是我创建的编辑表单
@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'))
}
我得到一个主题 select 框,但什么也没说 selected。我是否将标签集合正确传递到 select 框?
我正在使用 Laravel 5.5、PHP 7.2 和 Bootstrap 4。
我已经尝试 bootstrap-select 通过 CDN 和本地文件。
您缺少 space
变化:
@foreach($tags as$tag)
收件人:
@foreach($tags as $tag)
根据 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>
问题实际上是两个问题。 Bootstrap 4(最终)支持仅在最新的 bootstrap-select 测试版 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>