Laravel5.5编辑页Form::select报Invalid argument supplied for foreach()错误
问题排查结果
直接报错原因
你的视图文件中bedrooms下拉选择框的代码存在语法错误:
// 错误写法:手动把$bedrooms赋值成了空字符串 {!! Form::select('bedrooms', $bedrooms='', $result->bedrooms, ['class' => 'form-control', 'id' => 'bedrooms', 'placeholder' => 'Select...']) !!}
Form::select的第二个参数要求传入下拉选项的数组/集合,你这里写$bedrooms=''相当于直接传入空字符串,内部遍历的时候就会抛出Invalid argument supplied for foreach()错误。
修复方法
把上述代码里的错误赋值删掉,改成直接传入控制器分配的$bedrooms变量即可:
{!! Form::select('bedrooms', $bedrooms, $result->bedrooms, ['class' => 'form-control', 'id' => 'bedrooms', 'placeholder' => 'Select...']) !!}
其他需要修复的潜在问题
- 控制器的循环逻辑完全冗余错误:你嵌套了多层无效的while循环,内层循环第一次执行就直接return了视图,外层的变量赋值逻辑根本不会执行,建议删掉所有无用的while循环,直接把
$data的赋值逻辑写在非POST请求的判断里即可。 - 控制器的请求判断不规范:Laravel中不建议直接使用
$_POST全局变量,建议用if (!$request->isMethod('post'))判断非POST请求更符合框架规范。 - 检查关联数据返回:确认
BedType、PropertyType等用pluck查询的结果不为空,虽然这类集合对象即使为空Form::select也能兼容,但提前做好判空可以避免其他潜在问题。
内容的提问来源于stack exchange,提问作者Praff
相关产品推荐
相关产品推荐

