2017-09-25 6 views
0

Ich habe 'post' Tabelle in meiner Datenbank. In der Post-Tabelle habe ich die 'LanguageID'-Spalte. Wenn ich Daten speichere/speichere, mache ich zwei Einträge, zuerst mit Sprach-ID = 1 und den zweiten mit Sprach-ID = 2. Nun möchte ich alle 'Post'-Daten separat anzeigen.Wie man zwei oder mehr DataTables mit Yajra (Laravel) verwendet

-Controller

public function index(Request $request) 
{ 
    $languages = Language::where('IsActive', 1)->get(); 
    if($request->ajax()) { 
     foreach ($languages as $lang) { 
      $post = Post::where('LanguageID', $lang->id)->get(); 
     } 
     return Datatables::of($post) 
     ->addColumn('action', function($post){ 
      return '<a id="edit" class="btn btn-info" 
           href="post/' . $post->id . '/edit"> 
            <i class="glyphicon glyphicon-edit icon-white"></i> 
            Edit 
           </a> 
           <button type="button" class="btn btn-danger" 
           onclick="checkDelete('.$post->id.', this);" 
           data-token="{{ csrf_token() }}"> 
            <i class="glyphicon glyphicon-trash icon-white"></i> 
            Delete 
           </button>'; 
          }) 
     ->make(true); 
    } 
    return view('pages.back-end.lists.post')->with('languages', $languages); 
} 

Dies ist meiner Ansicht

Das ist mein yajra

$(function(){ 
$("#data-post").DataTable({ 
    processing: true, 
    serverSide: true, 
    ajax:{ 
      url: "{{ url("post") }}", 
      data:{ _token: "{{csrf_token()}}", languageid: languageid} 

     }, 
    columns: [ 
     { data: 'PostDate', name: 'PostDate'}, 
     { data: 'PostTitle', name: 'PostTitle' }, 
     { data: 'PostSlug', name: 'PostTitle' }, 
     { data: 'action', name: 'action'} 
    ] 
}); 

});

+0

Sie Filter basierend auf Sprache-ID verwenden können https://datatables.yajrabox.com/collection/custom-filter – Bugfixer

+0

Können Sie ein gib mir Beispiel? Ich habe benutzerdefinierte Filter sehen, aber ich bekomme nicht den poin @Bugfixer –

Antwort

0

Sie haben die Sprach-ID zu analysieren mit in ihr so ​​tun dataTable.php

public function language($id){ 
    $this->language = $id; 
    return $this; 
} 

public function query(Post $model) 
{ 
    $query = Post::where('LanguageID',$this->language)->select('posts.*'); 

    return $this->applyScopes($query); 
} 

dann rufen Sie die Datatable manuell

$('.tabPost').each(function(){ 
var lang_id = $(this).attr('id'); 
var oTable = $("#data-post" + lang_id).DataTable({ 
    processing: true, 
    serverSide: true, 
    dom: 'Bfrtip', 
    order: [[0, 'desc']], 
    buttons: ['create', 
      'export', 
      'print', 
      'reset', 
      'reload', 
      'colvis', 
      ], 
    ajax:{ 
    url: "{{ url("post") }}", 
    data: function(d) { 
     d.LanguageID = lang_id 
    } 
    }, 
    columns: [ 
     { data: 'id', name: 'id'}, 
     { data: 'PostDate', name: 'PostDate'}, 
     { data: 'PostTitle', name: 'PostTitle' }, 
     { data: 'PostSlug', name: 'PostTitle' }, 
     { data: 'action', name: 'action'} 
    ] 
}); 

$('#'+lang_id).on('click', function(e){ 
    oTable.draw(); 
    e.preventDefault(); 
}); 

});

und vergessen Sie nicht, Ihren Controller wie diese

public function index(PostDataTable $dataTable, Request $request) 
{ 
    $languages = Language::where('IsActive', 1)->get(); 
    return $dataTable->language($request->input('LanguageID'))->render('pages.back-end.lists.post', compact('languages')); 
} 
einstellen
0

können Sie verwenden yajra Datentabellen Filter basierend auf Sprache id reffer diese - https://datatables.yajrabox.com/collection/custom-filter

oder

Gebrauch kann, indem man die Sprache id manuelle Ajax-Aufruf auf die Schaltfläche Indonesien und Englisch tun und dann vernichten und reintiate Datentabelle ähnlich -

function customFilters(languageid) 
{ 
    $('#datatableid').dataTable().fnDestroy(); 
    $('#datatableid').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax":{ 
       "url": url_link, 
       "dataType": "json", 
       "type": "POST", 
       "data":{ _token: "{{csrf_token()}}", languageid: languageid} 

      }, 
    "columns": [ 
     { "data": "id" }, 
     { "data": "PostDate" }, 
     { "data": "PostTitle" }, 
     { "data": "PostSlug"}, 
     { "data": "LanguageID"}, 
     { "data": "actions" ,orderable: false, searchable: false} 
    ]  
}); 

}

Hoffe, das wird Ihnen helfen.

+0

Wissen Sie, wie Sie dies implementieren, wenn ich Service Datatable Yajra verwende? –

Verwandte Themen