Laravel表单占位符不显示及错误信息放置问题咨询
问题解答
问题1:创建模式下占位符无法显示的解决方法
你当前的value表达式里,{{old('firstname')}}后面跟着一个空格——哪怕没有old值且$user不存在,input的value会被设置成一个空格,浏览器会判定输入框已有内容,所以占位符不会显示。
修正方式:把value属性改成Laravel的合并写法,彻底避免多余空格:
value="{{ old('firstname', $user->firstname ?? '') }}"
- 创建模式下:
$user不存在、old('firstname')为空,value会是空字符串,占位符正常显示 - 编辑模式下:优先用验证失败后的old值回显,没有old值则加载
$user->firstname - 验证失败时:old值自动填充,不影响正常使用
问题2:错误信息的放置位置
错误信息要放在input-group容器的外面,用Bootstrap的invalid-feedback类包裹,不需要额外把input-group和错误信息套在一个div里(如果要对齐布局,可以给错误信息加上和输入框一致的列类)。
完整修正后的代码:
<div class="input-group col-sm-6 ml-sm-n2"> <div class="input-group-append"> <div class="input-group-text border-right-0 rounded-left" style="border-color:#006600;"> <span class="text-darkgreen fas fa-address-card"></span> </div> </div> <input type="text" style="border-color:#006600;" class="form-control @error('firstname') is-invalid @enderror" id="firstname" name="firstname" value="{{ old('firstname', $user->firstname ?? '') }}" placeholder="Prénom"> </div> @error('firstname') <div class="invalid-feedback d-block ml-sm-n2 col-sm-6"> {{ $message }} </div> @enderror
给invalid-feedback加d-block是保证错误信息正常显示(默认仅在input带is-invalid类时触发),加上ml-sm-n2 col-sm-6是让错误信息和输入框对齐,保持布局统一。
内容的提问来源于stack exchange,提问作者user2955335
相关产品推荐
相关产品推荐

