You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Laravel Blade模板中的"Undefined Variable"错误?

Laravel模板Undefined Variable错误修复方案

在使用Laravel的transaction.blade.php模板时,出现了Undefined Variable(未定义变量)错误,涉及的模板代码如下:

<div class="col-sm-3">                        
    <label class="visually-hidden" for="mechanic_id">Mechanic</label>                        
    <select name="mechanic_id" class="form-control form-select" id="mechanic_id" required>
        @foreach ($mechanic as $item)
            @if (old('mechanic') == $item->id)
                <option value="{{ $item->id }}" selected>{{ $item->nama }}</option>
            @else
                <option value="{{ $item->id }}">{{ $item->nama }}</option>
            @endif
        @endforeach
    </select>
</div>

错误原因

模板中使用的$mechanic变量未被控制器传递到视图,或变量名拼写不匹配(比如控制器传的是$mechanics,模板用$mechanic)。

修复步骤

  1. 在控制器中传递变量
    找到渲染该模板的控制器方法(比如TransactionController的create/edit方法),添加变量查询并传递:
public function create()
{
    // 从Mechanic模型获取数据,变量名必须和模板中的$mechanic一致
    $mechanic = \App\Models\Mechanic::all();
    // 将变量传递给视图
    return view('transaction', compact('mechanic'));
}
  1. 检查变量名一致性
    确保控制器传递的变量名和模板中使用的完全一致,Laravel对变量名大小写敏感。

  2. 修正表单回显字段名
    模板中old('mechanic')对应表单提交字段名,而你的select字段名是mechanic_id,所以需要修正回显逻辑:

@if (old('mechanic_id') == $item->id)
    <option value="{{ $item->id }}" selected>{{ $item->nama }}</option>
@else
    <option value="{{ $item->id }}">{{ $item->nama }}</option>
@endif

内容的提问来源于stack exchange,提问作者Tattadv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:30:26