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

Laravel中如何通过DataTables传递URL参数至控制器?

解决方案:修复DataTables变量传递与渲染错误

看起来你遇到的是DataTables渲染错误(对应tn/1提示),结合你的代码分析,核心问题出在action列的URL参数错误和DataTables API使用不当,同时可以优化变量传递的可靠性。下面是具体的修复步骤:

1. 优化视图中AJAX URL的变量传递

原视图中依赖request()->route('id')传递车辆ID,虽然能工作,但直接使用控制器已传递到视图的$vehicle对象更直观可靠,避免路由参数获取异常:

var vehicleexpensetable = $('#vehicleexpensetable').DataTable({
    processing: true,
    serverSide: true,
    // 改用$vehicle->id直接传递车辆ID
    ajax: "{{ action('\Modules\Essentials\Http\Controllers\VehicleExpenseController@index', $vehicle->id) }}",
    columnDefs: [
        {
            targets: 2,
            orderable: false,
            searchable: false,
        },
    ]
});

2. 修正DataTables action列的URL参数

你在addColumn('action')中错误地使用了车辆的$id作为费用记录的ID传递给编辑/删除方法,这会导致URL指向错误的资源,触发DataTables渲染错误。需要改为使用费用记录自身的ID(即$row->id):

->addColumn(
    'action',
    '@can("vehicle.update")
        <button data-href="{{ action(\'\Modules\Essentials\Http\Controllers\VehicleExpenseController@edit\', [$row->id]) }}" class="btn btn-xs btn-primary btn-modal" data-container=".view_modal">
            <i class="glyphicon glyphicon-edit"></i> @lang("messages.edit")
        </button> &nbsp;
    @endcan
    @can("vehicle.delete")
        <button data-href="{{ action(\'\Modules\Essentials\Http\Controllers\VehicleExpenseController@destroy\', [$row->id]) }}" class="btn btn-xs btn-danger delete_vehicleexpensebutton">
            <i class="glyphicon glyphicon-trash"></i> @lang("messages.delete")
        </button>
    @endcan'
)

3. 修复removeColumn的语法错误

原代码中->removeColumn('id','BusinessID')不符合DataTables的API规范(removeColumn一次只能接收一个列名),需要改为复数形式的removeColumns并传递数组,或者分开调用:

// 推荐方式:用removeColumns传递数组
->removeColumns(['id', 'BusinessID'])

// 替代方式:分开调用removeColumn
// ->removeColumn('id')
// ->removeColumn('BusinessID')

额外优化(可选)

如果需要在视图中直接使用车辆ID,可以在控制器返回视图时显式传递:

// 在控制器index方法的return view处
return view('essentials::vehicleexpense.index')->with(compact('expensetypes','vehicle', 'id'));

完成以上修改后,DataTables应该能正常渲染,同时车辆ID会正确传递到控制器,筛选出对应车辆的费用记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:22:03