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

如何通过Laravel Yajra DataTable向控制器传递id参数

问题原因和修复方案
  • 你将DataTable传递参数的data配置项注释了,这是id无法正常提交的核心原因
  • Yajra DataTable GET请求不需要额外传递csrf_token,只有POST请求需要
  • 控制器闭包中拼接路由不能直接写PHP标签,需要取当前行$row的属性
  • JS中调用的路由名需要和你定义的路由名称保持一致

修正后的jQuery代码

$(function() {
      var id = "<?php echo $id;?>";
      var table = $('#data-table').DataTable({
          processing: true,
          serverSide: true,
          searchable:true,
          ajax: {
              url: "{{ route('getOperationTimes') }}",
              type: "GET",
              data: function (d) {
                  d.id = id; // 把id参数附加到DataTable请求参数中
              }
          },
          columns: [{
                    data: 'DT_RowIndex',
                    name: 'DT_RowIndex'
                },
              {
                  data: 'name',
                  name: 'name'
              },
              {
                  data: 'day',
                  name: 'day'
              },
              {
                  data: 'start_time',
                  name: 'start_time'
              },
              {
                  data: 'end_time',
                  name: 'end_time'
              },
              {
                  data: 'action',
                  name: 'action',
                  orderable: false,
                  searchable: false
              },
          ]
      });
});

修正后的控制器代码

public function getOperationTimes(Request $request)
{
    if ($request->ajax()) {
        $station_id = $request->input('id');
        $station = new Station();
        $getData = $station->getOperationTimes($station_id);
        return Datatables::of($getData)
            ->addIndexColumn()
            ->addColumn('action', function($row){
                // 直接取当前行$row的属性拼接路由
                $btn = '<a href="/eCharge/public/vendor/getOperationTime/'.$row->id.'" class="edit btn btn-primary">Edit</a> ';
                return $btn;
            })
            ->rawColumns(['action'])
            ->make(true);
    }
}

验证方法

可以在控制器方法开头打印dd($request->all()),即可看到请求参数中已经携带了id值,确认参数正常后再注释调试代码执行业务逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:15:06