【问题标题】:Laravel: Not able to pass the right parameter to route in DataTable ButtonsLaravel:无法将正确的参数传递给 DataTable 按钮中的路由
【发布时间】:2019-05-17 03:36:41
【问题描述】:

我使用的是普通表格和我所有的按钮都可以正常工作。然后我遇到了数据表,所以我实现了数据表来列出我的员工模型中的所有员工。 所以我使用 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>';
                    }
                },
            ],
        });
    });

所以在上面的代码中,我渲染了一个按钮来执行删除功能。 不知何故,当我将参数传递给我的路线 {{ 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+'

【问题讨论】:

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


    【解决方案1】:

    我建议如下:

    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 请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-13
      • 2019-03-03
      • 2018-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-20
      相关资源
      最近更新 更多