i have tried to understand how it works but it does not run.
i get the message Missing required parameters for [Route: cablelists.show] [URI: cablelists/{cablelist}]. (View: C:\xampp\htdocs\KautexCabellist\resources\views\home.blade.php)
Function of the controller.
public function show(Request $request)
{
if(request()->ajax())
{
if(!empty($request->cablelists.ordernumber_id))
{
$data = DB::table('cablelists')
->select('cablelistscol', 'cablename_id', 'lengh', 'ordernumber_id')
->where($request->cablelists.ordernumber_id)
->get();
}
else
{
$data = DB::table('cablelists')
->select('cablelistscol', 'cablename_id', 'lengh', 'ordernumber_id')
->get();
}
return datatables()->of($data)->make(true);
}
$ordernumbers = Ordernumber::with('cablelist')->select(['ordernumberscol','idordernumbers'])->get();
return view('cablelist.show')->with('ordernumbers',$ordernumbers);
}
View
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel 5.8 - Individual Column Search in Datatables using Ajax</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.12/js/dataTables.bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/dataTables.bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<br />
<h3 align="center">Laravel 5.8 - Custom Search in Datatables using Ajax</h3>
<br />
<br />
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4">
<div class="form-group">
<select name="ordernumber_id" id="ordernumber_id" class="form-control" required>
<option value="">Wähle Auftragsnummer aus</option>
@foreach($ordernumbers as $ordernumber)
<option value="{{ $ordernumber->idordernumbers}}">{{ $ordernumber->ordernumberscol}}</option>
@endforeach
</select>
</div>
<div class="form-group" align="center">
<button type="button" name="filter" id="filter" class="btn btn-info">Filter</button>
<button type="button" name="reset" id="reset" class="btn btn-default">Reset</button>
</div>
</div>
<div class="col-md-4"></div>
</div>
<br />
<div class="table-responsive">
<table id="cablelist_data" class="table table-bordered table-striped">
<thead>
<tr>
<th>idcablelists</th>
<th>cablelistscol</th>
<th>cablename_id</th>
<th>lengh</th>
<th>ordernumber_id</th>
</tr>
</thead>
</table>
</div>
<br />
<br />
</div>
</body>
</html>
<script>
$(document).ready(function(){
fill_datatable();
function fill_datatable(ordernumber_id = '')
{
var dataTable = $('#cablelist_data').DataTable({
processing: true,
serverSide: true,
ajax:{
url: "{{ route('cablelists.show') }}",
data:{ordernumber_id:ordernumber_id}
},
columns: [
{
data:'idcablelists',
name:'idcablelists'
},
{
data:'cablelistscol',
name:'cablelistscol'
},
{
data:'cablename_id',
name:'cablename_id'
},
{
data:'lengh',
name:'lengh'
},
{
data:'ordernumber_id',
name:'ordernumber_id'
}
]
});
}
$('#filter').click(function(){
var ordernumber_id = $('#ordernumber_id').val();
if(ordernumber_id != '' && ordernumber_id != '')
{
$('#cablelist_data').DataTable().destroy();
fill_datatable(ordernumber_id);
}
else
{
alert('Select filter option');
}
});
$('#reset').click(function(){
$('#ordernumber_id').val('');
$('#cablelist_data').DataTable().destroy();
fill_datatable();
});
});
</script>
My route:
Route::get('cablelists/{cablelist}', 'CablelistsController@show')->name('cablelists.show');
Please help ;).