Laravel DataTables Yajrabox не отображает данные - PullRequest
2 голосов
/ 11 марта 2019

Я столкнулся с этой проблемой в последние несколько дней и не могу найти никакого решения для этого. Я использую YajraTables , и в качестве результата вывода JSON я получаю «c» при запуске каждого json, который он отображает.

Я также получаю ту же ошибку при использовании команды php artisan

Версия PHP: 7.2.11 Версия Laravel: 5.7.19

Вот некоторые экраны с ошибками:

Ошибка в командной строке при использовании Artisan enter image description here

Ошибка на экране HTML enter image description here

Ошибка JSON: enter image description here

Необработанный JSON, который показывает "c" при запуске каждого ответа JSON таблиц Яджры enter image description here

Вот как я включил YajraTables enter image description here

Код контроллера:

public function users(){

    $accounts = Accounts::select(['id', 'name', 'mobile', 'address', 'city'])->get();

    return Datatables::of($accounts)
        ->addColumn('action', function ($accounts) {
            return '<a href="bills/'.$accounts->id.'" class="btn btn-xs btn-primary btn-sm"><i class="glyphicon glyphicon-edit"></i> View Bills</a><a href="edit_accounts/'.$accounts->id.'" class="btn btn-xs btn-primary btn-sm"><i class="glyphicon glyphicon-edit"></i> Edit</a><a href="javascript:void(0);" class="btn delete_account btn-sm btn-xs btn-danger" data-id="'.$accounts->id.'"><i class="fa fa-trash-alt"></i> Delete</a>';
        })
        ->editColumn('id', 'ID: {{$id}}')
        ->make(true);

}

Код Javascript:

$(function() {
    $('#users-table').DataTable({
        processing: true,
        serverSide: true,
        ajax: '{!! route('users') !!}',
        columns: [
            { data: 'name', name: 'name' },
            { data: 'mobile', name: 'mobile' },
            { data: 'address', name: 'address' },
            { data: 'city', name: 'city' },
            {data: 'action', name: 'action', orderable: false, searchable: false}
        ]
    });
});

HTML код:

<table class="table table-bordered" id="users-table">

                    <thead>

                    <tr>
                        <th>Name</th>
                        <th>Mobile</th>
                        <th>Address</th>
                        <th>City</th>
                        <th>Action</th>
                    </tr>

                    </thead>

                </table>

Пожалуйста, помогите мне с этим. Заранее спасибо.

1 Ответ

1 голос
/ 11 марта 2019

Измените его на

public function users(){

    $accounts = Accounts::select(['id', 'name', 'mobile', 'address', 'city']);

     return DataTables::eloquent($accounts)
        ->addColumn('action', function ($account) {
            return '<a href="bills/'.$account->id.'" class="btn btn-xs btn-primary btn-sm"><i class="glyphicon glyphicon-edit"></i> View Bills</a><a href="edit_accounts/'.$account->id.'" class="btn btn-xs btn-primary btn-sm"><i class="glyphicon glyphicon-edit"></i> Edit</a><a href="javascript:void(0);" class="btn delete_account btn-sm btn-xs btn-danger" data-id="'.$account->id.'"><i class="fa fa-trash-alt"></i> Delete</a>';
        })
        ->editColumn('id', 'ID: {{$id}}')
        ->rawColumns(['action'])
        ->toJson();

}

и дайте мне знать, если вы получаете какую-либо ошибку сейчас. Не забудьте указать необработанный столбец при добавлении html.

кажется, что вы добавили ненужный символ в каком-то месте, но я бы хотел, чтобы вы протестировали с

->addColumn('action','<a href="bills/'.$accounts->id.'" class="btn btn-xs btn-primary btn-sm"><i class="glyphicon glyphicon-edit"></i> View Bills</a><a href="edit_accounts/'.$accounts->id.'" class="btn btn-xs btn-primary btn-sm"><i class="glyphicon glyphicon-edit"></i> Edit</a><a href="javascript:void(0);" class="btn delete_account btn-sm btn-xs btn-danger" data-id="'.$accounts->id.'"><i class="fa fa-trash-alt"></i> Delete</a>';
        );

проверьте, это работает, если вы спросите меня, я положу это в лезвие / частичное и использовать как

 ->addColumn('action', function(Video $account){
       return view('tagging.video-checkbox', compact('account'))->render();
 });
...