Laravel Blade中两个Select2输入框旧值设置问题:第一个正常渲染,第二个无法显示旧值
问题诊断与解决方案
嘿,我来帮你梳理下问题根源和解决办法:
1. 核心问题拆解
你遇到的问题主要来自三个细节错误:
- 第二个下拉框的旧值引用错了字段名
- 后端请求参数的重复键导致值被覆盖
- 错误提示的字段名不匹配对应组件
2. 分步修正方案
(1)修正表单组件的旧值与错误提示
第二个select组件的字段名是council_parent_id,但你用了parent_id来获取旧值和错误信息,导致内容为空。同时Laravel的Form::select不需要单独写value属性,第三个参数就是默认/旧值的位置。
修正后的表单代码:
<div class="form-group parent_id"> {{ Form::label('parent_id', 'اختر اللجنة الرئيسية', ['class' => 'control-label']) }} {{ Form::select('parent_id', $parents, \Input::old('parent_id') , ['placeholder' => '','class' => 'form-control parent_id select2d']) }} <span class="text-danger">{{ $errors->first('parent_id') }}</span> </div> <div class="form-group council_parent_id"> {{ Form::label('council_parent_id', 'اختر المجلس الرئيسي', ['class' => 'control-label']) }} {{ Form::select('council_parent_id', $council_parents, \Input::old('council_parent_id', $mainCouncil) , ['placeholder' => '','class' => 'form-control council_parent_id select2']) }} <span class="text-danger">{{ $errors->first('council_parent_id') }}</span> </div>
这里的关键调整:
- 把旧值获取改为
\Input::old('council_parent_id', $mainCouncil),同时把$mainCouncil作为默认值传入 - 错误提示改为
$errors->first('council_parent_id'),匹配组件对应的字段名 - 移除无效的
value属性,让Form::select自己处理默认值逻辑
(2)修复后端更新方法的重复键问题
你代码里的请求参数数组有重复的parent_id键,PHP中重复键会被后面的值直接覆盖,导致$request->council_parent_id的值完全丢失,后端根本拿不到第二个选择框的内容。
修正后的后端代码示例:
// 错误写法(重复键被覆盖) // ['parent_id' => $request->council_parent_id, 'parent_id' => $request->parent_id] // 正确写法(用对应字段名存储) [ 'parent_id' => $request->parent_id, 'council_parent_id' => $request->council_parent_id, // 其他需要更新的字段... ]
完成以上调整后,第二个下拉框就能正常显示旧值,后端也能正确接收两个字段的内容,错误提示也会对应生效啦。
内容的提问来源于stack exchange,提问作者ahmed desoky
相关产品推荐
相关产品推荐

