2015-08-24 15 views
15

Ho un database che contiene i dati recuperati dal database. Quando inserisco alcune parole chiave nella casella di testo di ricerca (la casella di testo di ricerca è generata da tabelle dati), il risultato della tabella cambierà. Questo è buono. Ma quando faccio clic su export in csv o pdf, il risultato in csv o pdf verrà recuperato dal database invece che dai database.Export CSV o PDF basato su datatables Laravel 4

Come esportare in csv/pdf in base al plug-in dei datatables utilizzando laravel?

// plugins DataTable

<link href="plugins/datatables/dataTables.bootstrap.css" rel="stylesheet" type="text/css" /> 
<script src="plugins/datatables/jquery.dataTables.min.js" type="text/javascript"></script> 
<script src="plugins/datatables/dataTables.bootstrap.min.js" type="text/javascript"></script> 

// php

public function sales_csv(){  

    // columns  
    $arrSelectFields = array(
     -- columns -- 
    ); 

    // query 
    -- sql queries -- 

    // passing the columns which I want from the result set. Useful when we have not selected required fields 
    $arrColumns = $arrSelectFields; 

    // define the first row which will come as the first row in the csv 
    $arrFirstRow = $arrSelectFields; 

    // building the options array 
    $options = array(
     'columns' => $arrColumns, 
     'firstRow' => $arrFirstRow, 
    ); 
    // creating the Files object from the Utility package. 
    $Files = new Files; 
    return $Files->convertToReportsSalesCSV($query, $options); 
} 
+0

può utilizzare il plugin di dati 'tableTools' per ottenere csv localmente – charlietfl

+0

@charlietfl ho fatto riferimento a questo https://www.datatables.net/extensions/tabletools/ e testato. Ho inserito la parola chiave, ma continua ad esportare l'intero risultato – hahahaha

+0

Puoi usare la libreria dompdf o devi usare i dati? – mdamia

risposta

7

avrei probabilmente inserire la parola al mio server ed eseguire la query SQL di nuovo filtraggio di tali risultati e quindi creare il csv/pdf

+1

grazie MorningDew. Scrivo il pulsante csv in un modulo e imposta tutte le condizioni del filtro come campi nascosti, quindi passa a laravel. GRAZIE! : D – hahahaha

4

Un modo per farlo è utilizzare jQuery e effettuare una chiamata Ajax.

In primo luogo, fornire un ID al tavolo. Avanti, ottenere la tabella stessa e ottenere la sua HTML usando questo pezzo di codice:

var html = $('#myCoolTable').html(); 

poi fare una chiamata AJAX per laravel per generare il PDF passando attraverso il codice HTML. È possibile utilizzare questa libreria da HTML a PDF: http://wkhtmltopdf.org/

Si dovrebbe quindi recuperare il PDF con la tabella esatta visualizzata sullo schermo (con qualsiasi filtro, ecc.).

Come sidenote, puoi anche aggiungere il tuo CSS all'HTML per dare alla libreria PDF e anche lo stile della tabella per essere lo stesso!

Spero che questo aiuti.