Laravel中$blogTitle路由参数传递到edit.blade.php为空问题求解
Laravel变量传递异常问题排查与修复
问题根本原因
Laravel 隐式模型绑定要求路由参数名称与控制器注入的模型变量名称完全一致(大小写敏感):
- 现有路由配置中编辑页的参数为
{blogtitle}(全小写) - 控制器
edit方法注入的模型参数为$blogTitle(驼峰命名,T大写)
两者名称不匹配,导致Laravel无法将路由中的ID值绑定为对应的BlogTitle模型实例,最终注入的是空的未初始化模型,传递到视图后就会出现空值问题。
修复方案
任选以下任意一种方案执行即可:
方案1:调整路由参数匹配控制器变量
如果是用资源路由注册的路由,直接指定资源参数名和控制器参数保持一致:
// routes/web.php 中修改资源路由定义 Route::resource('blogtitles', BlogTitlesController::class)->parameters([ 'blogtitles' => 'blogTitle' ]);
修改后路由参数会自动变为{blogTitle},和控制器参数匹配后即可正常触发隐式模型绑定。
方案2:调整控制器参数匹配现有路由
不需要修改路由配置,直接将控制器方法的参数名改为和路由参数一致的全小写格式:
public function edit(BlogTitle $blogtitle) { return view('blogtitles.edit')->with('blogTitle', $blogtitle); }
内容的提问来源于stack exchange,提问作者Thomas Read
相关产品推荐
相关产品推荐

