【发布时间】:2021-05-17 12:57:05
【问题描述】:
我的刀片视图 Laravel 中有一个数据表,我用户单击蓝色按钮,它将打开新页面并显示与之前单击的 user_id 相同的所有任务
我正在尝试将 user_id 值传递给控制器。我已经按照以下代码执行此操作
我的路线
Route::get('/detail/{user_id}', [PageController::class, 'UserTask'])->name('user.task');
刀片文件中我的数据表代码
$(function() {
var user_id = $(this).data('user_id'); //have different value from each rows
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
var table = $('.data-table').DataTable({
processing: true,
serverSide: true,
ajax: "{{ route('user.task') }}" + '/' + user_id,
columns: [{
data: 'DT_RowIndex',
name: 'DT_RowIndex',
orderable: false,
searchable: false,
},
{
data: 'title',
name: 'title',
orderable: false,
},
{
data: 'content',
name: 'content',
orderable: false,
visible: false,
},
{
data: 'progress',
name: 'progress'
},
{
data: 'status',
name: 'status'
},
{
data: 'target_selesai',
name: 'target_selesai'
},
{
data: 'action',
name: 'action',
orderable: false,
searchable: false
},
]
});
});
我的控制器
public function UserTask($user_id)
{
$data = Post::where('user_id', $user_id)->latest()->get();
return Datatables::of($data)
->addIndexColumn()
->addColumn('action', function ($row) {
$id = $row->id;
// $this->actionButton($row->id);
$btn = ' <a href="javascript:void(0)" data-toggle="tooltip" data-id="' . $id . '" data-original-title="Detail" class="btn btn-success mr-1 btn-sm detailProduct"><span class="fas fa-info"></span></a>';
return $btn;
})->addColumn('target_selesai', function ($row) {
//...
})
->addColumn('progress', function ($row) {
//...
})->addColumn('status', function ($row) {
//...
})
->rawColumns(['action', 'progress', 'status'])
->make(true);
return view('detail');
}
但是,它会返回错误Missing required parameter for [Route: user.task]
如果我从路由、ajax 路由中删除所有参数 {user_id},并更改
public function UserTask($user_id)
{
$data = Post::where('user_id', $user_id)->latest()->get();
进入
public function UserTask()
{
$data = Post::where('user_id', 1000000002)->latest()->get();
该程序将完美运行,我如何将 user_id 值从数据表传递到控制器?
【问题讨论】:
标签: ajax laravel datatable datatables laravel-8