You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中使用href调用route助手传参报错问题求助

正确的Laravel路由传参方式

错误原因分析

你遇到的错误来自两个问题:

  1. Blade模板变量写法错误:emv.evd_id未加$前缀,PHP会将emv识别为常量而非变量;同时访问对象属性需用->而非.。
  2. 路由未定义参数占位符,无法生成带参数的合法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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:55:19