Reputation: 219
I am new to javascript , How to refresh a page after selecting number of page in laravel.
My controller code
$itemCount = Input::get('item_count');
$data = [
'allItems' => $venueData->get(),
'priorityItems' => $venueData->take($itemCount)->get()
];
My view Code
<div class="form-group select-page">
<select class="form-control" id="sel1" name="item_count">
<option value="10" @if(Input::has('item_count') && Input::get('item_count') == '10') selected @endif>1</option>
<option value="20" @if(Input::has('item_count') && Input::get('item_count') == '20') selected @endif>2</option>
<option value="40" @if(Input::has('item_count') && Input::get('item_count') == '40') selected @endif>60</option>
<option value="80" @if(Input::has('item_count') && Input::get('item_count') == '80') selected @endif>80</option>
<option value="100" @if(Input::has('item_count') && Input::get('item_count') == '100') selected @endif>100</option>
</select>
</div>
How to refresh the page and load the items according to the options
Upvotes: 1
Views: 2714
Reputation: 5186
In your Laravel Action
public function your_action(Request $request)//inject request to access per_page query param
{
$perPage = $request->query('per_page', 10);
$items = YourModel::paginate($perPage)->appends([
'per_page' => $perPage
]);
return view('your_view', compact('items', 'perPage'));
}
Now in your JS
<div class="form-group select-page">
<select class="form-control" id="sel1" name="item_count" onchange="window.location.href = window.location.href.replace('per_page={{ $perPage }}', '') + 'per_page=' + this.value">
<option value="10" @if($perPage == '10') selected @endif>1</option>
<option value="20" @if($perPage == '20') selected @endif>2</option>
<option value="40" @if($perPage == '40') selected @endif>60</option>
<option value="80" @if($perPage == '80') selected @endif>80</option>
<option value="100" @if($perPage == '100') selected @endif>100</option>
</select>
</div>
When onchange
you are running a script. When window.location.href
to some value you are redirecting to a url & it's happening on changing an option value of select.
Here window.location.href.replace('per_page={{ $perPage }}', '')
you are actually replacing per_page=10
or per_page=20
any query key value for per_page so that it doesn't repeat in the url.
Next 'per_page=' + this.value
we are again appending the per_page
value.
Upvotes: 2
Reputation: 356
Implement like below ...
$('#sel1').change(function(){
var value = $(this).val();
// here redirect to link with item_count value
});
Upvotes: 2