Laravel 5.6新建医生账号点击患者列表报Undefined variable: patient错误求助
问题解决:Undefined variable: patient 错误
错误原因
视图patient-management/list.blade.php中尝试使用$patient变量,但控制器传递数据的方式或视图的变量引用逻辑存在问题:
- 你的控制器将患者数据存入
$data['patients'],再通过->with('data', $data)传递给视图,这意味着视图里需要通过$data['patients']访问患者列表; - 若视图中直接写了
@foreach($patients as $patient)或者错误引用了$patient(而非遍历集合中的元素),就会触发未定义变量错误。
解决方案
方案1:调整控制器传参方式(推荐)
修改控制器的返回语句,直接将$data数组传入视图,这样视图可以直接使用$patients和$permissions变量:
// 替换原return语句 return view('patient-management.list', $data);
或者拆分传递:
return view('patient-management.list') ->with('permissions', $permissions) ->with('patients', $patients);
之后视图里正常遍历即可:
@foreach($patients as $patient) <!-- 这里渲染单个患者的信息 --> @endforeach
方案2:修改视图代码适配现有传参
如果不想改动控制器,就在视图中从$data数组里取出患者列表:
@foreach($data['patients'] as $patient) <!-- 这里渲染单个患者的信息 --> @endforeach
额外检查点
- 确认新创建的医生账号
doctor_id与患者表中的doctor_id关联正确,避免出现空集合(空集合不会触发未定义变量错误,但会导致列表无数据); - 控制器中
$user = User::where('id', Auth::user()->id)->with(...)->get();可以优化为$user = User::find(Auth::user()->id)->load('usertype.permissions');,代码更简洁规范。
内容的提问来源于stack exchange,提问作者Fatal Sin
相关产品推荐
相关产品推荐

