我正在 Laravel 中创建一个博客。我有两个表 - 帖子和类别。当我想编辑一篇文章时,我遇到了类别问题。我的帖子控制器正在将类别发送到视图,我可以在编辑时看到它们,但我不知道如何在选择选项中设置当前类别。表已连接:public function posts(){ return $this->hasMany('App\Post');}public function category(){ return $this->belongsTo('App\Category');}控制器:public function edit(Post $post){ $categories = Category::all(); return view('admin.posts.edit', compact('post'))->withCategories($categories);}看法:<form action="{{ route('posts.update', ["post" => $post->id]) }}" method="post" enctype="multipart/form-data" class="form-horizontal"> @csrf <div class="form-body"> <div class="form-group"> <label class="col-md-3 control-label">Naslov</label> <div class="col-md-4"> <input type="text" name='title' value='{{ old("title", $post->title) }}' class="form-control"> @if($errors->has('title')) <div class='text text-danger'> {{ $errors->first('title') }} </div> @endif </div> </div>如何使类别在选项中显示所选帖子的当前类别,就像我的标题一样?value='{{ old("title", $post->title) }}'
2 回答
白衣染霜花
TA贡献1796条经验 获得超10个赞
要显示当前关联的Category,您可以基于以下内容设置默认的“选定”选项$post->category_id:
<option value="{{ $category->id }}" {{ old('category_id', $post->category_id) == $category->id ? 'selected' : '' }}>{{ $category->name }}</option>这是一个简单的三元组,它根据值设置selected选项之一的属性old(),或者,如果old()未设置,则基于值$post->category_id
蛊毒传说
TA贡献1895条经验 获得超3个赞
您正在寻找的是元素的selected属性。<option>
@forelse ($categories as $category)
<option value="{{ $category->id }}" {{ $category->id == old('category_id', $post->category_id) ? 'selected' : '' }}>
{{ $category->name }}
</option>
@endforelse
在你的刀片模板中也有一个小的变化,以使用@forelse指令来减少代码。
您还可以稍微更改您的控制器代码:
return view('admin.posts.edit', compact('post', 'categories'));
此外,该laravelcollective/html软件包可能会对您创建表单有很大帮助
- 2 回答
- 0 关注
- 191 浏览
添加回答
举报
0/150
提交
取消
