【问题标题】:Laravel 4 Datatables Server Side ProcessingLaravel 4 数据表服务器端处理
【发布时间】:2017-01-26 08:53:26
【问题描述】:

你好 Stackoverflow 我现在正在做一个基于 Web 的项目,显示我办公室的所有产品现在我遇到了问题现在我有这个页面并且我使用了数据表服务器端处理

这里是视图:

<table id="dloadTable" class="display" cellspacing="0" width="100%">
    <thead>
       <tr>
       <th>File ID Number</th>
       <th>File Name</th>
       <th>File Type</th>
       <th>Date Issued</th>
       <th>Uploader</th>

       <th>Action</th>
       </tr>
    </thead>
    <tfoot>
        <tr>
        <th>File ID Number</th>
        <th>File Name</th>
        <th>File Type</th>
        <th>Date Issued</th>
        <th>Uploader</th>

        <th>Action</th>
        </tr>
     </tfoot>
   </table>

控制器:

public function getAdvanceFilterData()
    {

        $files = Files::select(array('files.id','files.file_name','files.file_type','files.date','files.username'));

        return Datatables::of($files)->make(true);

路线:

Route::get('/getfilesdata', 'FileController@dloadFile');

还有js:

$(document).ready(function() {
var oTable = $('#dloadTable').DataTable({
        processing: true,
        serverSide: true,
        ajax: {
            url: '/getfilesdata',
            dataSrc:""
        },
        order: [[1,'desc']],
        columnDefs: [ { //this prevents errors if the data is null
            targets: "_all",
            defaultContent: ""
            } ],
        columns: [
            {data: 'id', name: 'files.id'},
            {data: 'file_name', name: 'files.file_name'},
            {data: 'file_type', name: 'files.file_type'},     
            {data: 'date', name: 'files.date'},
            {data: 'username', name: 'files.username'},
            {data: 'action', name: 'action', orderable: false, searchable: false}

        ]
    });

} );

当我尝试检查我在控制器中得到的不是我期望它不返回 JSON 数据的数据时,我应该怎么做? TIA

【问题讨论】:

  • files 是您数据库中的表吗?
  • 是的,彼得是我数据库中表的名称之一
  • 您是否检查过$files 中的数据是否正确?
  • @PeterDarmis 是的,我已经检查过了,但不幸的是它不是 JSON 格式,你可以在这里检查drive.google.com/file/d/0BwwBLqPiSk-9OXZEazU2Y09ieHM/…
  • 这是$files 中服务器端返回的内容吗?没关系。你能检查var_dump(Datatables::of($files)-&gt;make(true));的输出吗?

标签: php laravel server-side datatables-1.10 laravel-4.2


【解决方案1】:

您需要两条路线才能使其工作。第一条路线用于显示 表格视图,第二条路线用于处理 dataTables json 回复。在您的示例中,getAdvanceFilterData 仅适用于 处理 json 响应。您需要添加其他路线,例如 getIndex 在此 example 中执行并加载相应的视图。

控制器类的示例

class FilesController extends Controller
{
    /**
     * Displays datatables front end view
     */
    public function getIndex()
    {
        return view('files.index');
    }

    /**
     * Process datatables ajax request.
     */
    public function getAdvanceFilterData()
    {
        $files = DB::table('files')->select(array('files.id','files.file_name','files.file_type','files.date','files.username'));

        return Datatables::of($files)->make(true);
    }
}

路由

Route::controller('files', 'FilesController', [
    'anyData'  => 'files.data',
    'getIndex' => 'files',
]);

Javascript

$(function() {
    $('#users-table').DataTable({
        processing: true,
        serverSide: true,
        ajax: '{!! route('files.data') !!}',
    order: [[1,'desc']],
    columnDefs: [{//this prevents errors if the data is null
        targets: "_all",
        defaultContent: ""
        }],
    columns: [{data: 'id', name: 'files.id'},
              {data: 'file_name', name: 'files.file_name'},
              {data: 'file_type', name: 'files.file_type'},     
              {data: 'date', name: 'files.date'},
              {data: 'username', name: 'files.username'},
              {data: 'action', name: 'action', orderable: false, searchable:false}]
    });
});

【讨论】:

  • 我有你刚才所说的第一条路线,但我认为它不适用于我的项目我正在尝试使用此示例github.com/bllim/laravel4-datatables-package public function getAdvanceFilter() { return view('datatables.eloquent .高级过滤器'); }
猜你喜欢
  • 2016-07-27
  • 2016-06-21
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多