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

Laravel多参数URL路由编写及双参数传递报错解决

嘿,我来帮你解决这个问题!你遇到的错误是因为你的路由需要两个必填参数,但调用route()助手函数时只传了一个,咱们一步步来修复:

步骤1:正确定义支持多参数的路由

首先打开routes/web.php,定义包含两个必填参数的命名路由,参数顺序要和你期望的URL结构匹配(先campaign ID,再product ID):

// 替换成你实际的控制器类名和方法名
Route::get('/campaign_details/{campaign_id}/campaign_product_details/{product_id}', [CampaignProductController::class, 'showDetail'])
    ->name('campaign_product_details.detail');

这里的{campaign_id}和{product_id}是路由要求的两个必填参数,要和URL中的位置一一对应。

步骤2:生成链接时传入两个参数

你现在只传递了$result->id(应该是product的ID),还需要补充当前页面的campaign ID,有两种清晰的传参方式:

  • 方式一:关联数组(推荐,可读性更强)
    如果视图里已经有campaign的变量(比如$campaign),或者可以从当前请求的路由中获取campaign ID:
{{-- 如果视图里有$campaign变量 --}}
<a href="{{ route('campaign_product_details.detail', ['campaign_id' => $campaign->id, 'product_id' => $result->id]) }}" class="hvr-float-shadow">View</a>

{{-- 或者直接从当前路由参数中获取campaign_id --}}
<a href="{{ route('campaign_product_details.detail', ['campaign_id' => request()->route('campaign_id'), 'product_id' => $result->id]) }}" class="hvr-float-shadow">View</a>
  • 方式二:顺序传参
    也可以按照路由定义的参数顺序直接传值,注意顺序必须和路由参数一致:
<a href="{{ route('campaign_product_details.detail', [$campaign->id, $result->id]) }}" class="hvr-float-shadow">View</a>
验证路由是否正确

可以运行Artisan命令查看路由列表,确认参数配置无误:

php artisan route:list

找到命名为campaign_product_details.detail的路由,检查两个参数是否为必填(没有?后缀)。

这样修改后,生成的链接就会是你期望的http://localhost/buyforfund/fundraising/public/campaign_details/64/campaign_product_details/26,缺失参数的错误也会消失啦!

内容的提问来源于stack exchange,提问作者Bhoomi Patel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:23:50