如何将参数从数据表发送到控制器 Laravel

问题描述

我的刀片视图 Laravel 中有一个数据表,我用户单击蓝色按钮它将打开新页面显示与之前单击的 user_id 相同的所有任务

enter image description here

我正在尝试将 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',{
                    data: 'content',name: 'content',visible: false,{
                    data: 'progress',name: 'progress'
                },{
                    data: 'status',name: 'status'
                },{
                    data: 'target_selesai',name: 'target_selesai'
                },{
                    data: 'action',name: 'action',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 值从数据表传递到控制器?

解决方法

当您尝试在客户端更改路由时,您不能使用 "{{ route('user.task') }}" + '/' + user_id,因为 route() 函数会在服务器中呈现路由。使用 ajax 作为数据发送 user_id 并使用 request()->get('user_id')

检索它