Prerequisites
Make sure you have jquery built in the app.js
assets. The example for setup the jQuery in Laravel follows the Laravel/UI
auth scaffolding with Bootstrap
mode. In the resource/js/bootstrap.js
, we could see the jquery is imported:
...
try {
window.Popper = require('popper.js').default;
window.$ = window.jQuery = require('jquery');
require('bootstrap');
} catch (e) {}
...
Installing Datatable
If you're currently using Bootstrap 4 for the project, you may want to use the bootstrap 4 styled datatable by installing it:
npm install datatables.net-bs4 --save-dev
or if you want to keep the datatable plain, use this instead:
npm install datatables.net --save-dev
Build Datatable
If you're using bootstrap 4, just import the datatable inside the mentioned jquery import code block above:
try {
window.Popper = require('popper.js').default;
window.$ = window.jQuery = require('jquery');
require('bootstrap');
require('datatables.net-bs4');
} catch (e) {}
also, make sure to apply the styles:
...
// Bootstrap
@import "~bootstrap/scss/bootstrap";
// Datatables BS4
@import "~datatables.net-bs4/css/dataTables.bootstrap4.css";
...
or for plain datatable, you only need to modify the js script:
try {
window.Popper = require('popper.js').default;
window.$ = window.jQuery = require('jquery');
require('bootstrap');
require('datatables.net');
} catch (e) {}
then build the assets by:
npm run development
or
npm run production
Test the Datatable
Let's create a new route like this:
routes\web.php
:
...
Route::get('/datatable-example', function(){
return view('datatable-example');
});
...
and a new view blade file named datatable-example.blade.php
and fill it with:
resources\views\datatable-example.blade.php
:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel Datatable Example</title>
<!-- Fonts -->
<link rel="dns-prefetch" href="//fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">
<!-- Styles -->
<link href="{{ mix('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div class="container-fluid">
<div class="row vw-100 vh-100 d-flex justify-content-center align-items-center">
<div class="col-md-8">
<div class="card">
<div class="card-body">
<table id="product-table" class="table table-sm table-bordered">
<thead>
<th>No</th>
<th>Product Name</th>
<th>Stock</th>
<th>Price</th>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Peanut Butter</td>
<td>10</td>
<td>10</td>
</tr>
<tr>
<td>2</td>
<td>Peanut Butter Chocolate</td>
<td>5</td>
<td>50</td>
</tr>
<tr>
<td>3</td>
<td>Peanut Butter Chocolate Cake</td>
<td>3</td>
<td>100</td>
</tr>
<tr>
<td>4</td>
<td>Peanut Butter Chocolate Cake with Kool-aid</td>
<td>2</td>
<td>150</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script src="{{ mix('js/app.js') }}"></script>
<script>
$(function () {
$('#product-table').DataTable({
processing: true,
serverSide: false
});
});
</script>
</body>
</html>
Check it out on the browser.
Top comments (0)