2 回答
TA贡献1934条经验 获得超2个赞
在 HTML 表单上,您可以检查是否id是这样的一部分$post(我会做最容易理解的,您可以通过多种方式进行重构):
<option value="{{ $category->id }}" {{isset($post->categories->where('id', $category->id)->first())?'selected':''}}>{{ $category->name}}</option>
为了使这件事变得简单并以最少的调用数据库,在刀片视图上的循环之前将类别关系加载到您的帖子中。您不需要 ( $post=Post::find($post->id);) 行,因为您的路由模型绑定已经注入了它。
在您的Controller的edit方法中:
public function edit(Post $post)
{
$post->load('categories');
$categories=Category::all();
return view('admin.pages.post.edit',compact('post','categories'));
}
我假设你有关系,从categories到posts您的正确设置后的模型。但这本质上只是询问“此表单上的此帖子是否具有此类别(按此循环),然后将其标记为已选中”。
我真的很喜欢 LaravelCollective 的方式来做到这一点,也推荐你看看图书馆。它将模型绑定到表单,并自动为您选择所选项目。您可以使用 Collective 在这样的简单行中完成:
{!! Form::select('categories[]', $categories, null, ['class'=>'form-control', 'multiple', 'id'=>'categories']) !!}
TA贡献1836条经验 获得超3个赞
修复了数小时搜索后的问题
在我所做的编辑方法中:
public function edit(Post $post)
{
$post=Post::with('tags','categories')->find($post->id);
$tags=Tag::all();
$categories=Category::all();
return view('admin.pages.post.edit',compact('post','categories','tags'));
}
在我看来:
<div class="form-group">
<label>Categories</label>
<select class="form-control" id="categories" name="categories[]" multiple="multiple">
@foreach($categories as $category)
<option value="{{ $category->id }}"
@foreach($post->categories as $postCat)
{{ $postCat->id==$category->id?'Selected':'' }}
@endforeach
>{{ $category->name}}</option>
@endforeach
</select>
- 2 回答
- 0 关注
- 173 浏览
添加回答
举报