2016-05-10 3 views
2

Ich benutze Laravel 5 und ich habe ein Databases wie in der Abbildung unten. In der Statusspalte möchte ich festlegen, dass das Datum "abgelaufen" ist, wenn das Datum größer als das aktuelle Datum ist. Und wenn das Datum kleiner oder gleich dem aktuellen Datum ist, dann ist der Status "aktiv". Else-Status ist "deaktiviert". Weißt du, wie man es macht?Wie kann man den Status "aktiv" oder "abgelaufen" in einer Spalte in Datatables setzen?

enter image description here

This below is my datatables javascript:

$(document).ready(function(){ 
    var oTable = $('#surat').DataTable({ 
     processing: true, 
     serverSide: true, 
     ajax: { 
      url: '{!! route("datasurat") !!}', 
      data: function (d) { 
       d.jenis_surat = $('input[name=jenis_surat]').val(); 
       d.nomor_surat = $('input[name=nomor_surat]').val(); 
       d.perihal = $('input[name=perihal]').val(); 
      } 
     }, 
     columns: [ 
      {data: 'no', name: 'no'}, 
      {data: 'jenis_surat', name: 'jenis_surat'}, 
      {data: 'nomor_surat', name: 'nomor_surat'}, 
      {data: 'perihal', name: 'perihal'}, 
      {data: 'date_to', name: 'date_to'}, 
      {data: 'status', name: 'status', 
      mRender: function(data, type, full) { 
       if (strtotime($request['date_to']) < strtotime(date("Y-m-d")) || strtotime($request['date_to']) = '0000-00-00') { 
       return '<span class="label label-default">Active</span>'; 
       } 
       else if(strtotime($request['date_to']) > strtotime(date("Y-m-d"))){ 
       return '<span class="label label-default">Expired</span>'; 
       } 
       else { 
       return '<span class="label label-default">Deactive</span>'; 
       } 
      } 
      }, 
      {data: 'action', name: 'action'} 
     ] 
    }); 

    $('#search_form').on('submit', function(e) { 
     oTable.ajax.reload(); 
     e.preventDefault(); 
    }); 
    }); 

Antwort

0

Werfen Sie einen Blick auf column rendering in der Datentabellen Initialisierung. Der Beispielcode aus Datentabellen Dokumentation:

$(document).ready(function() { 
    $('#example').DataTable({ 
     "columnDefs": [ 
      { 
      // The `data` parameter refers to the data for the cell (defined by the 
      // `data` option, which defaults to the column being worked with, in 
      // this case `data: 0`. 
      "render": function (data, type, row) { 
       return data +' ('+ row[3]+')'; 
      }, 
      "targets": 0 
     }, 
      { "visible": false, "targets": [ 3 ] } 
     ] 
    }); 
}); 

Dies wird die erste Spalte mit den Daten in der ersten Spalte, die mit den in der 3. Spalte zur Verfügung gestellten Daten kombiniert erzeugen. Sie können es auf ähnliche Weise verwenden, um Daten aus einer Spalte mit einer anderen zu vergleichen und dann eine zu rendernde Zeichenfolge zu definieren.

Hier ist eine grobe Vorstellung davon, wie Sie es mit Ihren Daten verwenden können:

columns: [ 
     {data: 'no', name: 'no'}, 
     {data: 'jenis_surat', name: 'jenis_surat'}, 
     {data: 'nomor_surat', name: 'nomor_surat'}, 
     {data: 'perihal', name: 'perihal'}, 
     {data: 'date_to', name: 'date_to'}, 
     {data: 'status', name: 'status'}, 
     ] 
columnDefs: [ 
     { 
      "render": function(data, type, row) { 
       if (strtotime(row.date_to) < strtotime(date("Y-m-d"))) { 
        return '<span class="label label-default">Active</span>'; 
       } 
       else if (strtotime(row.date_to) > strtotime(date("Y-m-d"))) { 
        return '<span class="label label-default">Expired</span>'; 
       } 
       else { 
        return '<span class="label label-default">Deactive</span>'; 
       } 
      }, "targets": [5] 
     } 
     ] 
+0

ich es ausprobiert habe, und ich habe Uncaught Syntax bekommt: Unerwartete Kennung in columnsDefs. Die row.date_to, liest es die Daten in der Zeile Datum? Weißt du wie wenn das date_to nicht in den Databases angezeigt wird? Sagen wir, es ist in der Datenbank. – hendraspt

+0

Wie sehen Ihre Eingabedaten aus? Selbst wenn die date_to-Spalte ausgeblendet ist, sollte es für die Verwendung der Spalte keine Rolle spielen. row.date_to sollte die Daten aus dem date_to Spalte lesen – Adam

+0

Annd jetzt merke ich meinen Code put row.date_to in beiden Fällen. Mein Fehler - einer davon sollte das aktuelle Datum sein. Ich werde bearbeiten – Adam

Verwandte Themen