2017-01-26 14 views
0

Здравствуйте Stackoverflow я делаю webbased проект прямо сейчас, отображающая все товары моего офиса теперь я встречая проблема теперь у меня есть эта страница, и я использовал DataTables на стороне сервера обработкиLaravel 4 DataTables Server Side Обработка

Здесь вид:

<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', '[email protected]'); 

И ЯШИ:

$(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

+0

ли 'files' таблицы в базе данных? –

+0

Да, Питер, это было имя одной из таблиц в моей базе данных –

+0

Вы проверили, что вы получаете соответствующие данные в '$ files'? –

ответ

0

Для этого вам нужно два маршрута. Первый маршрут предназначен для отображения таблицы таблицы , а второй маршрут предназначен для обработки данныхTables 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); 
    } 
} 

Routing

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}] 
    }); 
}); 
+0

У меня есть этот 1-й маршрут, который вы только что сказали, но я думаю, что он не работает в моем проекте. Я пытаюсь используйте этот образец https://github.com/bllim/laravel4-datatables-package public function getAdvanceFilter() { return view ('datatables.eloquent.advance-filter'); } –