Php 超越父控制器功能laravel 8

Php 超越父控制器功能laravel 8,php,datatables,laravel-8,Php,Datatables,Laravel 8,我试图在jquery中创建一个具有用户角色和权限的datatable。拥有权限,能够将其与一个或另一个角色关联,也能够撤销它 创建动态数据表时,我可以显示数据表中的角色,但无法在相应列中创建复选框。附图: 如本表所示,有管理员和用户角色以及应用程序权限列表的示例。我希望能够在每个列中添加一个复选框,以将这些权限分配给这些角色 为此,我在控制器中创建了一个函数来生成动态数据表: public function getListDataTable(Request $request) {

我试图在jquery中创建一个具有用户角色和权限的datatable。拥有权限,能够将其与一个或另一个角色关联,也能够撤销它

创建动态数据表时,我可以显示数据表中的角色,但无法在相应列中创建复选框。附图:

如本表所示,有管理员和用户角色以及应用程序权限列表的示例。我希望能够在每个列中添加一个复选框,以将这些权限分配给这些角色

为此,我在控制器中创建了一个函数来生成动态数据表:

public function getListDataTable(Request $request)
    {
        $actualModel = strtolower($request->modelTable."s");

        if (!auth()->user()->hasPermissionTo($actualModel.'.index')) {
            echo json_encode(['No tienes permisos para ver.']);
        }

        $modelTable = 'App\Models\\'.$request->modelTable;
        
        $columns = array();
        foreach ($request->columns as $column) {
            array_push($columns, $column['data']);
        }

        $totalData = $modelTable::count();

        $totalFiltered = $totalData; 

        $limit = $request->length;
        $start = $request->start;
        $order = $columns[$request->order[0]['column']];
        $dir = $request->order[0]['dir'];

        if(empty($request->search['value'])) {
            $results = $modelTable::offset($start)
                    ->limit($limit)
                    ->orderBy($order, $dir)
                    ->get();
        } else {
            $search = $request->search['value']; 

            $listing = $modelTable::where($columns[0], 'LIKE', "%{$search}%");
            $totalListing = $modelTable::where($columns[0], 'LIKE', "%{$search}%");
            
            for ($i = 1; $i < count($columns)-1; $i++) {
                $listing->orWhere($columns[$i], 'LIKE', "%{$search}%");
                $totalListing->orWhere($columns[$i], 'LIKE', "%{$search}%");
            }
            
            $results = $listing->get();
            $totalFiltered = $totalListing->count();

            
        }

        $data = array();
        
        $this->createButtons($results, $columns, $actualModel, $request, $totalData, $totalFiltered);
        
    }
<script>
    var columns = [];
    $('#listDataTable thead th').each(function(){
        var column = {"data" : $(this).attr('data-id')};
        columns.push(column);
    });
    
    $('#listDataTable').DataTable({
        "processing": true,
        "serverSide": true,
        "responsive": true,
        "dom": '<"row"<"col-8 col-xs-12"B><"col-2 col-xs-12"l><"col-md-2 col-xs-10"f>>rt<"row"<"col-6"i><"col-6"p>>',
        "buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"],
        "ajax":{
            "url": "{{ route('getListDataTable') }}",
            "dataType": "json",
            "type": "POST",
            "data":{ _token: "{{csrf_token()}}", modelTable : "{{ $modelTable }}"}
        },
        "columnDefs": [{
            "targets": $('#listDataTable thead th:last').index(),
            "orderable": false,
            'class': 'actions text-center'
        }],
        "columns": columns
    });
</script>

请分享更多详细信息-在控制器中重写函数的问题在哪里?这与数据表有什么关系?@NicoHaase感谢您的回复。我的第一个问题是覆盖方法,第二个问题是数据表。更新我的问题以获取答案。到目前为止,您尝试过什么来覆盖该函数?让我们先解决任何问题,然后再解决问题other@NicoHaase我不知道如何对我的oter函数进行重写,从来没有在php laravel中进行过重写。我正在阅读和旅行,在我的控制器中设置同名函数,在父控制器中设置我的函数受保护。我需要在我的数据表中,在我的控制器中的角色(管理员、用户等)中,在权限控制器(我用这个函数更新了我的问题)中创建复选框。我正在评论我的按钮,但什么都没有。。。
<script>
    var columns = [];
    $('#listDataTable thead th').each(function(){
        var column = {"data" : $(this).attr('data-id')};
        columns.push(column);
    });
    
    $('#listDataTable').DataTable({
        "processing": true,
        "serverSide": true,
        "responsive": true,
        "dom": '<"row"<"col-8 col-xs-12"B><"col-2 col-xs-12"l><"col-md-2 col-xs-10"f>>rt<"row"<"col-6"i><"col-6"p>>',
        "buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"],
        "ajax":{
            "url": "{{ route('getListDataTable') }}",
            "dataType": "json",
            "type": "POST",
            "data":{ _token: "{{csrf_token()}}", modelTable : "{{ $modelTable }}"}
        },
        "columnDefs": [{
            "targets": $('#listDataTable thead th:last').index(),
            "orderable": false,
            'class': 'actions text-center'
        }],
        "columns": columns
    });
</script>
<div class="card-body">
        <div class="table-responsive">
          <table id="listDataTable" class="table table-bordered">
              <thead>
                  <tr>
                      <th data-id="name">Name</th>
                      <th data-id="guard_name">Guard Name</th>
                      <th data-id="created_at">Created</th>
                      @foreach ($roles as $rol)
                          <th data-id="{{ $rol->name }}">{{ $rol->name }} </th>
                      @endforeach
                      <th data-id="options" class="text-center">Actions</th>
                  </tr>
              </thead>

              <tbody></tbody>
          </table>
        </div><!-- end table-responsive -->
      </div> <!--end card-body -->
    </div><!-- end card -->
 /**
     * @override function createButtons in controller
     */

    public function createButtons()
    {
        $nestedData = array();

        foreach ($this->results as $d) {
            foreach ($this->columns as $column) {
                
                if ($column != 'options') {
                    if ($this->validateDate($d->$column)) {
                        $aux[$column] = date('Y-m-d H:i:s', strtotime($d->$column));
                    } else {
                        $aux[$column] = $d->$column;
                    }
                }
            }

            /*$aux['options'] = '<div class="btn-group btn-group-sm">';

            $aux['options'] = $aux['options'] . "<a href='".route($this->actualRoute.'.edit', $d->id)."'><span class='fa fa-edit text-green'></span></a>";

            $btnDestroy = 'return confirm("¿Estas seguro que deseas eliminar esto?, la acción no se puede deshacer.")';
            
            $aux['options'] = $aux['options'] . "
                <form method='POST' action='".route($this->actualRoute.'.destroy', $d->id)."'>
                    <input name='_method' type='hidden' value='DELETE'>
                    <input name='_token' type='hidden' value='".csrf_token()."'>
                    <button type='submit' class='btn btn-link text-danger' onclick='".$btnDestroy."'><span class='fa fa-trash text-red'></button>
                </form>
            ";

            $aux['options'] = $aux['options'] . '</div>';

            $nestedData[] = $aux;*/
        }

        return $nestedData;
    }