Laravel框架下如何实现从推广推荐链接跳转到对应商品详情页
修正方案
1. 修正路由定义
Laravel路由规则不需要填写完整站点域名,系统会自动匹配当前站点域名,修改routes/web.php代码如下:
// Affiliate推广跳转路由 Route::get('/affiliate/{referrer_id}/{product_id}', 'UsersController@referrerRedirect');
2. 修正控制器逻辑
注意路由参数顺序要和控制器方法接收参数的顺序严格对应,你路由定义中先传referrer_id再传product_id,方法参数顺序也要和路由保持一致。
逻辑上需要先把推广人ID存入用户端(会话/ Cookie)用于后续返利统计,再跳转到对应商品详情页,修改UsersController代码如下:
public function referrerRedirect($referrer_id, $product_id) { // 可选校验:判断商品是否存在,避免无效跳转 if (!\App\Models\Product::where('id', $product_id)->exists()) { abort(404); } // 存储推广人ID到Session,有效期在config/session.php中配置 session(['referrer_id' => $referrer_id]); // 如需要推广人标识长期有效(关闭浏览器再打开也保留),可替换为存Cookie,有效期30天 // return redirect()->to('/product/' . $product_id)->cookie('referrer_id', $referrer_id, 30 * 24 * 60); // 跳转到对应商品详情页 return redirect()->to('/product/' . $product_id); }
后续返利统计说明
后续用户下单时,只需要在下单逻辑中读取session('referrer_id')或者request()->cookie('referrer_id'),就能拿到对应的推广人ID,关联到订单记录中即可完成返利统计。
内容的提问来源于stack exchange,提问作者Muqadar Ali
相关产品推荐
相关产品推荐

