Laravel:无法传递正确的参数以在DataTable Button中进行路由

时间:2018-12-16 15:56:37

标签: jquery laravel laravel-5 datatables laravel-blade

我在使用普通表和所有按钮都可以正常工作。然后,我遇到了数据表,因此我实现了数据表以列出我的员工模型中的所有员工。 因此,我使用JQuery将数据提供给表。下面是代码:

   $(document).ready( function () {
        $('.table').DataTable({
            processing: true,
            serverSide: true,
            ajax : '{!! route('employees.search') !!}',
            columns: [
                { data: 'name', name: 'name'},
                { data: 'empid', name: 'empid'},
                { data: 'user_type', name: 'user_type'},
                { data: 'depots', name: 'depots'},
                { data: 'id',   name: 'id',
                  render: function ( data , row ) {
                    return '<div style="margin-left:1%;">
                            <button class="btn btn-round btn-primary btn-sm" 
                             onclick="showMessage('+data+')">Delete</button> 
                             <form id="'+data+'" method="POST" action=" {{ 
                              route("employees.destroy","'+data+'") }} "> 
                              <input type="hidden" name="_method" 
                               value="delete"> {{ csrf_field() }} </form> </div>';
                    }
                },
            ],
        });
    });

因此在上面的代码中,我渲染了一个按钮来执行Delete功能。 不知何故,当我将参数传递到路线{{route("employees.destroy","'+data+'") }}时,它以 data 的形式返回,而我希望它是该行的ID。下面是我的删除功能代码:

public function destroy($id)
    {
        return $id;
        if ( Auth::check() ) {
            $findResult = AppUser::where('id','=',$id)->first();
            $user = User::where('email',$findResult->email)->first();
            if ($findResult->delete())
            { 
                if ($user) {
                    $user->delete();
                }
                return redirect()->route('employees.index','all')->with('success' , 'Employee deleted successfully!');
            }
            return back()->withInput()->with('error' , 'Employee could not be deleted');
        }        
    }

所以我得到的回答是错误的。有人可以告诉我将参数发送到路线的替代方法或解决方案吗?我期望该值是该行的ID,但我得到的响应只是'+ data +'

1 个答案:

答案 0 :(得分:0)

我建议以下内容:

  1. 使用addColumn()方法将URL作为数据的一部分返回。例如:

    // ... skipped ...
    ->addColumn('delete_url', function ($model) {
        return route('backend.model.delete', $model);
    });
    
  2. 为“删除”按钮提供特殊的类,例如“ btn-delete”。

  3. 使用特殊类“ btn-delete”将事件处理程序附加到“删除”按钮。单击按钮后,使用delete_url数据属性中的URL发出Ajax请求。