Laravel Livewire创建依赖下拉报unexpected end of file错误
错误根因
syntax error, unexpected end of file 是Blade模板解析阶段抛出的语法错误,代表引擎解析到文件末尾时,仍未找到预期的闭合语法结构,具体触发原因如下:
- 你提供的
create.blade.php代码片段存在未闭合的HTML标签:子分类模块的<select>标签仅写了开头和3个option选项,缺少</select>闭合标签,外层包裹的<div class="col-md-6">、<div class="row mb-4">节点也没有对应的闭合标记,模板解析到文件末尾无法匹配标签结构,直接触发报错。 - 额外注意你的Livewire组件还存在变量命名不匹配的问题,修复标签闭合后会触发下一个错误:
Assignment.php中向视图传递的变量键名为Category(大写首字母、单数形式),但assignment.blade.php中循环遍历使用的变量是$categories(小写开头、复数形式),二者不一致会报未定义变量错误。
修复步骤
- 补全
create.blade.php中子分类模块的所有闭合标签,示例代码如下:
</div> <livewire:assignment /> <div class="row mb-4"> <label for="subcategory" class="col-md-4 col-form-label text-md-end">Sub Category</label> <div class="col-md-6"> <select name="subcategory" id="subcategory" class="form-select col-md-6"> <option value="null">Select subcategory</option> <option value="wine">Wine</option> <option value="whisky">Whisky</option> <!-- 其余子分类选项 --> </select> </div> </div>
- 修正Livewire组件的传参变量名,和模板内调用的名称保持一致,修改
Assignment.php的render方法:
public function render() { return view('livewire.assignment', [ 'categories' => Category::all() // 键名改为和模板一致的$categories ]); }
- 如果要实现依赖下拉的动态联动,还需要给分类下拉框绑定Livewire模型属性,监听分类选中值的变化后查询对应子分类,再渲染到子分类下拉框中即可。
内容的提问来源于stack exchange,提问作者Felicity
相关产品推荐
相关产品推荐

