php - 在 laravel 中编辑帖子时显示类别
问题描述
我正在 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>
<div class="form-group">
<label class="col-md-3 control-label">Kategorija</label>
<div class="col-md-4">
<select class="form-control" name="category_id">
@if(count($categories) > 0)
@foreach($categories as $category)
<option value="{{ $category->id }}">{{ $category->name }}</option>
@endforeach
@endif
</select>
@if($errors->has('category_id'))
<div class='text text-danger'>
{{ $errors->first('category_id') }}
</div>
@endif
</div>
</div>
如何使类别在选项中显示所选帖子的当前类别,就像我的标题一样?value='{{ old("title", $post->title) }}'
解决方案
要显示当前关联的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