Объект класса Yajra \ Datatables \ Engines \ CollectionEngine не может быть преобразован в строку - PullRequest
0 голосов
/ 01 ноября 2018

Я использую данные jquery для обработки на стороне сервера, но получаю сообщение об ошибке. Объект класса Yajra \ Datatables \ Engines \ CollectionEngine не может быть преобразован в строку в ответ. Ниже мой код.

<div class="table-responsive">
  <table class="table table-bordered table-hover toggle-circle default footable-loaded footable" id="users-table">
    <thead>
      <tr>
         <th>@lang('app.id')</th>
         <th>@lang('app.employee_erp')</th>
         <th>@lang('app.guard_name')</th>
         <th>@lang('app.center_name')</th>
         <th>@lang('app.current_post')</th>
         <th>@lang('app.contract')</th>
         <th>@lang('app.mobile')</th>
         <th>@lang('app.gender')</th>
         <th>@lang('app.action')</th>
      </tr>
    </thead>
  </table>

и код javascript указан ниже

var table = $('#users-table').dataTable({
            responsive: true,
            processing: true,
            serverSide: true,
            stateSave: true,
            ajax: '{!! route('admin.guards.data') !!}',
            language: {
                "url": "<?php echo __("app.datatable") ?>"
            },
            "fnDrawCallback": function( oSettings ) {
                $("body").tooltip({
                    selector: '[data-toggle="tooltip"]'
                });
            },
            columns: [
                { data: 'id', name: 'id' },
                { data: 'employee_erp', name: 'employee_erp' },
                { data: 'guard_name', name: 'guard_name' },
                { data: 'center_name', name: 'center_name' },
                { data: 'current_post', name: 'current_post'},
                { data: 'contract', name: 'contract' },
                { data: 'mobile', name: 'mobile' },
                { data: 'gender', name: 'gender' },
                { data: 'action', name: 'action', width: '15%' }
            ]
        });

Код контроллера выглядит следующим образом

public function data() {

    $gurads = GuardDetails::all();

    return Datatables::of($gurads)
        ->addColumn('action', function ($row) {
            return '<a href="' . route('admin.employees.edit', [$row->id]) . '" class="btn btn-info btn-circle"
                  data-toggle="tooltip" data-original-title="Edit"><i class="fa fa-pencil" aria-hidden="true"></i></a>

                  <a href="' . route('admin.employees.show', [$row->id]) . '" class="btn btn-success btn-circle"
                  data-toggle="tooltip" data-original-title="View Employee Details"><i class="fa fa-search" aria-hidden="true"></i></a>

                  <a href="javascript:;" class="btn btn-danger btn-circle sa-params"
                  data-toggle="tooltip" data-user-id="' . $row->id . '" data-original-title="Delete"><i class="fa fa-times" aria-hidden="true"></i></a>';
        });
}

Пожалуйста, объясните мне, как действовать.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018
public function data() {

$gurads = GuardDetails::all();

return Datatables::of($gurads)
    ->addColumn('action', function ($row) {
        return '<a href="' . route('admin.employees.edit', [$row->id]) . '" class="btn btn-info btn-circle"
              data-toggle="tooltip" data-original-title="Edit"><i class="fa fa-pencil" aria-hidden="true"></i></a>

              <a href="' . route('admin.employees.show', [$row->id]) . '" class="btn btn-success btn-circle"
              data-toggle="tooltip" data-original-title="View Employee Details"><i class="fa fa-search" aria-hidden="true"></i></a>

              <a href="javascript:;" class="btn btn-danger btn-circle sa-params"
              data-toggle="tooltip" data-user-id="' . $row->id . '" data-original-title="Delete"><i class="fa fa-times" aria-hidden="true"></i></a>';
    })->make(true);

}

Вы забыли добавить ->make(true)

0 голосов
/ 01 ноября 2018

Я думаю, что вы забыли вызвать make() метод данных. Поэтому ваш код должен выглядеть так:

return Datatables::of($guards)
    ->addColumn(...)
    ->make();

Надеюсь, это поможет:)

...