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

Laravel中如何将Blade页面的点赞类型参数传递给控制器postLike方法

问题根因

你前端点赞按钮的URL中传递的查询参数名为type,但控制器postLike方法中使用request('like')取值,二者参数名不匹配,导致无法动态获取点赞类型。


修复步骤

  1. 修改控制器取值逻辑
    将postLike方法中的取值代码替换为匹配的参数名:
// 替换原代码 $like = request('like');
$like = request('type');
  1. 修复字段自增的变量解析问题
    你当前自增字段的代码使用了单引号包裹变量模板,PHP单引号不会解析内部变量,需要改为双引号:
// 替换原代码 $article->increment('like_{$like}');
$article->increment("like_{$like}");
  1. 可选优化:增加参数合法性校验(推荐)
    为了避免传入非法的点赞类型导致数据库报错,可以在取值后增加校验逻辑:
$allowTypes = ['heart', 'finger'];
if (!in_array($like, $allowTypes)) {
    return response()->json([
        'message' => '不支持的点赞类型'
    ], 400);
}

可选替代方案:把点赞类型放到路由路径中

如果不想用查询参数传值,也可以直接把类型写到路由路径里:

  • 修改web.php路由定义:
Route::get('article/{id}/like/{type}', 'App\Http\Controllers\ArticleController@postLike');
  • 修改控制器方法定义:
public function postLike($id, $type) {
    $like = $type;
    // 后续逻辑保持不变
}
  • 修改blade模板的按钮链接:
<a href="/article/{{ $article->id }}/like/heart" class="btn btn-primary">Like Heart</a>
<a href="/article/{{ $article->id }}/like/finger" class="btn btn-primary">Like Finger</a>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:36:01