I have a table where I need to show title, image and option. I have already made a datatable jquery and called the data. My table is as below.
<table class="table"> <thead> <tr> <th>#</th> <th>Title</th> <th>Image</th> <th>Option</th> </tr> </thead> <tbody> </tbody> </table>
And my jquery to send data to controller is as follow.
<script type="text/javascript">
$(document).ready(function() {
$('.table').DataTable({
"processing": true,
"serverSide": true,
"ajax": "{{ route('slidertable.getposts') }}",
"columns": [
{data: 'title', name: 'title'},
{data: 'image', name: 'image',
},
{data:'action',orderable:false}
]
});
});
</script>
And controller looks like this
public function getPosts()
{
$data = Slider::all();
return Datatables::of($data)
->addColumn('action', function($row) {
return '<div class="row text-center">
<div class="col-sm-6">
<a href="slider/'. $row->id .'/edit">
<i class="fa fa-edit" class="form-inline"></i>
</a>
</div>
<div class="col-sm-6">
<form action="/slider/'.$row->id.'" method="POST" class="form-inline">'.csrf_field().'
<input type="hidden" name="_method" value="DELETE">
<button type="submit" class="fa fa-trash" >
And The Route is as follow
Route::get('slidertable/getposts', ['as'=>'slidertable.getposts','uses'=>'SliderController@getPosts']); My output looks this
Instead of the image name I like to display image of its folder.
SOLUTION
There are two method for this solution one is to render by ajax. Other is to add a new column in the controller
Solution 1
I added a code in the image of the jquery. And the code is like this
{data: 'image', name: 'image',"render": function (data, type, full, meta) {
return "<img src=\"/images/slider/" + data + "\" height=\"80px\"/>"} The whole code looks like this
$('.table').DataTable({
"processing": true,
"serverSide": true,
"ajax": "{{ route('slidertable.getposts') }}",
"columns": [
{data: 'title', name: 'title'},
{data: 'image', name: 'image',"render": function (data, type, full, meta) {
return "<img src=\"/images/slider/" + data + "\" height=\"80px\"/>"}
},
{data:'action',orderable:false}
]
}); Solution 2
In this method I deleted the image data from the jquery and put this code in the controller
addColumn('image', function ($row) {
$url= asset('images/slider/'.$row->image);
return '<img src="'.$url.'" border="0" width="40" class="img-rounded" align="center" />';
})
rawColumns(['image', 'action'])->make(true); At last the final result looked like this
After 20 years of transforming global communication, Skype has officially ceased operations. Microsoft, which purchased…
In a serene forest by the edge of a sparkling lake, there lived a cheerful…
Retiring comfortably is a goal many aspire to achieve, and with the right strategies, it’s…
Is your computer running frustratingly slow? Don't worry; you're not alone in facing this common…