Laravel 9 Blade下拉框无法正确回显历史选中值问题求助
问题解决:Laravel编辑页面下拉框无法回显选中值
你的问题出在Blade模板的选中判断逻辑错误,以下是修正方案:
错误原因
原代码中你错误地将old('company_id')和$employee->company_id做比较,这完全不符合需求——我们需要判断的是当前循环的公司ID是否等于用户之前选中的值(初始加载时是员工关联的公司ID,表单验证失败时是old()保存的提交值)。
修正后的Blade代码
方式一:手动判断
<select name="company_id" class="form-control"> @foreach($companies as $company) <option value="{{ $company->id }}" {{ (old('company_id') ?: $employee->company_id) == $company->id ? 'selected' : '' }}> {{ $company->name }} </option> @endforeach </select>
方式二:使用Laravel内置selected()辅助函数(更简洁)
<select name="company_id" class="form-control"> @foreach($companies as $company) <option value="{{ $company->id }}" {{ selected(old('company_id', $employee->company_id), $company->id) }}> {{ $company->name }} </option> @endforeach </select>
说明
old('company_id', $employee->company_id):优先使用表单提交失败后保留的company_id值,如果没有(即首次打开编辑页面),则使用员工关联的公司ID。- 两种方式都能正确实现:初始加载编辑页面时自动选中员工所属公司,表单验证失败时保留用户提交的选中值。
你的Controller和Model代码无需修改,表结构关联也正确。
内容的提问来源于stack exchange,提问作者Arctic Fox
相关产品推荐
相关产品推荐

