You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中编辑文章时如何获取下拉选择框的选中值?

解决Laravel编辑文章时下拉选择框选中值的问题

嘿,我看到你在Laravel编辑文章页面的分类下拉框选中状态上踩坑了,咱们一步步来搞定它!

问题出在哪?

你当前的Blade模板里,判断选中状态的代码逻辑错啦:

{{$category->id == $category->id ? 'selected' : '' }}

这行代码是拿当前循环的分类ID和它自己对比,结果所有选项都会被标记为selected,这显然不是你想要的效果。正确的逻辑应该是对比当前文章关联的分类ID,也就是咱们从控制器传过来的$post->category_id。

修正步骤

你的模型关联(Post和Category的belongsTo/hasMany)以及控制器传递数据的代码都是没问题的,只需要修改Blade模板里的选中判断:

修正后的下拉框代码

<div class="form-group">
    <label for="category_id">Select category</label>
    <select name="category_id" id="category_id" class="form-control">
        <option disabled>List of available post categories</option>
        @foreach($categories as $category)
            <!-- 这里改成和$post的category_id对比 -->
            <option value="{{ $category->id }}" {{ $category->id == $post->category_id ? 'selected' : '' }}>{{ $category->name }}</option>
        @endforeach
    </select>
</div>

额外优化(可选)

如果你的文章可能存在未设置分类的情况(也就是$post->category_id为null),可以添加一个默认的空选项,让页面逻辑更完整:

<div class="form-group">
    <label for="category_id">Select category</label>
    <select name="category_id" id="category_id" class="form-control">
        <option value="" {{ is_null($post->category_id) ? 'selected' : '' }}>-- 请选择分类 --</option>
        @foreach($categories as $category)
            <option value="{{ $category->id }}" {{ $category->id == $post->category_id ? 'selected' : '' }}>{{ $category->name }}</option>
        @endforeach
    </select>
</div>

这样修改后,编辑页面打开时,下拉框就会自动选中当前文章对应的分类啦!

内容的提问来源于stack exchange,提问作者Sead Silajdzic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 20:22:32