Laravel中使用href调用route助手传参报错问题求助
正确的Laravel路由传参方式
错误原因分析
你遇到的错误来自两个问题:
- Blade模板变量写法错误:
emv.evd_id未加$前缀,PHP会将emv识别为常量而非变量;同时访问对象属性需用->而非.。 - 路由未定义参数占位符,无法生成带参数的合法URL。
修复步骤
1. 修改路由定义,添加参数占位符
在路由中加入{evd_id}占位符,让Laravel能识别并传递URL参数:
Route::get('emvvalidationdetailsemvcard/{evd_id}', 'EmvvalidationdetailsController@emvcard')->name('staff.emvvalidationdetails.emvcard');
2. 调整控制器方法(可选,更符合最佳实践)
直接接收路由参数,替代从Request中取值的方式,代码更简洁:
public function emvcard($evd_id, GetEmvDetailsByEvdId $getEmvDetailsByEvdId) { $records = $getEmvDetailsByEvdId->execute($evd_id); $breadcrumbs_main = 'Validated Accounts'; $bradcrumbs_details = '-'; return view('staff.emvvalidationdetails.update_card', [ 'data_object' => $records ], compact('breadcrumbs_main', 'breadcrumbs_details')); }
如果坚持使用Request获取参数,保持原控制器代码即可,路由修改后$request->evd_id依然能正常取值。
3. 修正Blade模板中的链接写法
将变量改为正确的$emv->evd_id格式,通过route()函数传递参数:
<a href="{{ route('staff.emvvalidationdetails.emvcard', $emv->evd_id) }}">你的链接文本</a>
若需明确指定参数名(适配多参数场景),可使用数组传递:
<a href="{{ route('staff.emvvalidationdetails.emvcard', ['evd_id' => $emv->evd_id]) }}">你的链接文本</a>
内容的提问来源于stack exchange,提问作者marivic valdehueza
相关产品推荐
相关产品推荐

