Laravel 8表单编辑异常排查:apellido与cedula字段无法更新
问题根源:表单字段
name属性错误 嘿,我一眼就揪出问题所在了!你的视图表单里有好几个字段的name属性写错了,这直接导致提交的请求参数混乱,不仅apellido、cedula没法正常更新,连direccion和ciudadResi也会出问题。
具体错误位置:
- Cédula字段:你把input的
name写成了apellido,而不是cedula——这会导致用户输入的身份证号被塞进apellido参数里,真正的cedula参数根本没被提交。 - Dirección字段:同样,
name属性错误地写成了apellido,应该改为direccion。 - Ciudad de Residencia字段:
name属性也是错误的apellido,需要改成ciudadResi。
修正后的表单字段代码:
把这三个字段的name属性修正后,就能正常提交参数了:
<!-- 修正后的Cédula字段 --> <div class="form-group row"> <label for="cedula" class="col-md-4 col-form-label text-md-right">{{ __('Cédula') }}</label> <div class="col-md-6"> <input id="cedula" type="text" class="form-control @error('cedula') is-invalid @enderror" name="cedula" value="{{ $medico->cedula}}" required autocomplete="cedula" autofocus> @error('cedula') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <!-- 修正后的Dirección字段 --> <div class="form-group row"> <label for="direccion" class="col-md-4 col-form-label text-md-right">{{ __('Dirección') }}</label> <div class="col-md-6"> <input id="direccion" type="text" class="form-control @error('direccion') is-invalid @enderror" name="direccion" value="{{ $medico->direccion}}" required autocomplete="direccion" autofocus> @error('direccion') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <!-- 修正后的Ciudad de Residencia字段 --> <div class="form-group row"> <label for="ciudadResi" class="col-md-4 col-form-label text-md-right">{{ __('Ciudad de Residencia') }}</label> <div class="col-md-6"> <input id="ciudadResi" type="text" class="form-control @error('ciudadResi') is-invalid @enderror" name="ciudadResi" value="{{ $medico->ciudadResi}}" required autocomplete="ciudadResi" autofocus> @error('ciudadResi') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div>
问题原因解析:
当多个表单字段共用同一个name属性时,提交请求后后面字段的值会覆盖前面的,而且你真正需要的cedula、direccion、ciudadResi参数根本不会出现在$request->all()里。Laravel的fill()方法依赖请求参数和模型$fillable里的字段名匹配,所以这些字段自然没法被正确更新。
修正后,你再用dd($request->all())查看,就能看到cedula、direccion、ciudadResi的正确参数了,此时执行更新操作就能正常生效。
内容的提问来源于stack exchange,提问作者Diego Utreras
相关产品推荐
相关产品推荐

