从选项列表中将当前管理员设置为默认作者

Set the current admin as the default author from the list of options

我正在为 Laravel 应用程序创建一个博客,其中只有管理员可以 post 向博客添加新 articles/posts。在 post 中,我为管理员选择了 post 的作者,但是我正在尝试设置默认选择的作者是创建新 [=23= 时的当前管理员] 而编辑页面从数据库中检索作者并将其设置为默认值。

在控制器中,我调用了所有管理员在 blade 中列出它们

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    $authors    = Admin::all();
    $categories = Category::all();
    $tags       = Tag::all();
    return view('posts.create', compact('categories', 'tags', 'authors'));
}

我在 blade 中设置了一个条件,如果 author_id 未设置,则让当前登录的管理员成为默认选择的作者。

                    <select name="author" id="author" data-placeholder="Choose an Author" class="form-select">
                        @foreach($authors as $author)
                            <option value="{{$author->id}}"
                                @if (!isset($post->author_id))
                                {{ auth()->guard('admin')->user()->id ? 'selected' : '' }}
                                @elseif ((isset($post->author_id) && $author->id == $post->author_id))
                                {{ 'selected' }}
                                @endif>{{ $author->name }}</option>
                        @endforeach
                    </select>

以上代码将selected添加到所有选项中,并调用options中的最后一个。

您需要检查 Auth ID 是否等于 Select ID

<select name="author" id="author" data-placeholder="Choose an Author" class="form-select">
                        @foreach($authors as $author)
                            <option value="{{$author->id}}"
                                @if (!isset($post->author_id))
                                  @if(auth()->guard('admin')->user()->id=={{$author->id}})
                                  Selected    
                                  @endif
                                @elseif ((isset($post->author_id) && $author->id == $post->author_id))
                                {{ 'selected' }}
                                @endif>{{ $author->name }}</option>
                        @endforeach
                    </select>

或者你可以这样做

<select name="author" id="author" data-placeholder="Choose an Author" class="form-select">
                        @foreach($authors as $author)
                            <option value="{{$author->id}}"
                                @if (!isset($post->author_id))
                                {{ auth()->guard('admin')->user()->id == {{$author->id}} ? 'selected' : '' }}
                                @elseif ((isset($post->author_id) && $author->id == $post->author_id))
                                {{ 'selected' }}
                                @endif>{{ $author->name }}</option>
                        @endforeach
                    </select>