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
相关产品推荐
相关产品推荐

