Laravel 8路由报错:admin.edit-keywords缺少必填参数code如何解决?
错误根因
你访问的/admin/edit-keywords/LVGET路由本身匹配逻辑正常,控制器方法也已经成功执行,报错是在渲染admin/edit-keywords.blade.php视图阶段触发的:视图代码中某处调用了route('admin.edit-keywords')生成URL时,没有传入该路由必填的code参数,因此抛出参数缺失异常。
修复方案
- 第一步:检查
admin/edit-keywords.blade.php文件内所有route('admin.edit-keywords')的调用点,按规则传入code参数
如果你是在写表单提交逻辑,注意你的保存接口路由name是admin.save_keywords,不要错用成GET路由的admin.edit-keywords,否则也会触发该错误。正确的表单action写法参考:
如果你确实需要生成GET编辑路由的URL,必须传入code参数:<!-- 错误写法:错用GET路由名,且未传参数 --> <form action="{{ route('admin.edit-keywords') }}" method="POST"> <!-- 正确写法:用POST保存路由的name --> <form action="{{ route('admin.save_keywords') }}" method="POST">route('admin.edit-keywords', ['code' => $language['view']->language_code]) - 第二步:优化原有跳转按钮的URL生成逻辑,避免硬写相对路径导致的匹配错误,
languages.blade.php的按钮代码修改为:<a href="{{ route('admin.edit-keywords', ['code' => $language->language_code]) }}" class="btn btn-success btn-sm"><i class="fa fa-language"></i> Edit Keywords</a> - 额外提示:你补充的可正常运行的路由写法存在不规范问题,GET和POST路由使用了相同的name
admin.edit-language,Laravel会默认覆盖先定义的同name路由,能正常运行属于巧合,建议尽快将POST路由的name修改为admin.update-language避免后续出现隐性错误。
内容的提问来源于stack exchange,提问作者MsCrelix
相关产品推荐
相关产品推荐

