如何在Blade路由中传递变量?Laravel资源路由传参404问题
问题解决方法
你生成的URL里出现%24project-%3Eid,说明模板中的$project->id没被解析成实际ID值,而是被当作字符串输出了,这是核心问题。以下是具体解决办法:
1. 确认变量已传递到视图
检查控制器返回视图时,是否正确传入了$project变量:
// 写法一 return view('你的视图文件名', compact('project')); // 写法二 return view('你的视图文件名')->with('project', $project);
如果没传这个变量,模板里的$project会被当成字符串,直接输出导致URL错误。
2. 修正路由参数传递方式
你用Route::resource生成的project.update路由,参数是{project},推荐直接传递模型实例,Laravel会自动提取ID:
{{ route('project.update', $project) }}
如果要手动传ID,需对应路由参数名称,用关联数组传递:
{{ route('project.update', ['project' => $project->id]) }}
3. 验证$project实例有效性
先在视图里临时输出{{ $project->id }},确认能显示正确的数字,排除$project为空或无ID值的情况。
另外注意:project.update是PUT/PATCH请求,若用表单提交,需在表单内添加@method('PUT')或@method('PATCH');若用a标签跳转,默认是GET请求,也会触发404。
内容的提问来源于stack exchange,提问作者AdBess
相关产品推荐
相关产品推荐

