Laravel路由admin.percent.edit缺失id参数触发UrlGenerationException排查
问题修复方案
核心错误为:admin.percent.edit 路由需要 locale、id 两个必填参数,参数缺失触发UrlGenerationException。
修复步骤
1. 修正PercentController的edit方法
当前edit方法错误覆盖了路由注入的$id参数,且参数顺序和路由定义不匹配:
// 替换原有edit方法 public function edit($locale, $id) { // 用findOrFail避免数据不存在时引发后续错误 $category = Percent::findOrFail($id); return view('admin.percent.edit', compact('category')); }
注:Laravel路由参数按定义顺序注入,你的路由规则为
{locale}/admin/percent/edit/{id},所以第一个参数对应$locale,第二个对应$id。
2. 修正编辑页表单提交配置
编辑页表单当前错误使用了展示页面的edit路由作为提交地址,应该指向update更新路由,同时补充PUT方法标识:
<!-- 替换原有form标签代码 --> <form action="{{ route('admin.percent.update', ['id' => $category->id, 'locale' => app()->getLocale()]) }}" method ="post" enctype="multipart/form-data"> {{ csrf_field() }} <!-- 新增PUT方法声明 --> @method('PUT')
请先确认路由文件中已定义
admin.percent.update路由,参数规则和admin.percent.edit保持一致。
3. 检查admin/includes/top.blade.php
报错明确提示错误出现在这个公共视图文件中,找到该文件内调用route('admin.percent.edit')的代码,补全locale、id两个必填参数即可。
额外优化建议
index页面的编辑跳转链接建议改用路由名称生成,避免后续路由规则调整导致链接失效:
<!-- 替换原有编辑跳转链接 --> <a href="{{ route('admin.percent.edit', ['locale' => app()->getLocale(), 'id' => $item->id]) }}" class="btn btn-primary btn-square">{{ __('session.edit') }}</a>
内容的提问来源于stack exchange,提问作者user2837788
相关产品推荐
相关产品推荐

