如何修复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)。
修复步骤
- 在控制器中传递变量
找到渲染该模板的控制器方法(比如TransactionController的create/edit方法),添加变量查询并传递:
public function create() { // 从Mechanic模型获取数据,变量名必须和模板中的$mechanic一致 $mechanic = \App\Models\Mechanic::all(); // 将变量传递给视图 return view('transaction', compact('mechanic')); }
检查变量名一致性
确保控制器传递的变量名和模板中使用的完全一致,Laravel对变量名大小写敏感。修正表单回显字段名
模板中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
相关产品推荐
相关产品推荐

