首页 > 解决方案 > 在 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) }}'

标签: phphtmlmysqllaravel

解决方案


要显示当前关联的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


推荐阅读