Vikash
Vikash

Reputation: 219

How to refresh a page according to the selected option in laravel

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

Answers (2)

ARIF MAHMUD RANA
ARIF MAHMUD RANA

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

Ye Lwin Soe
Ye Lwin Soe

Reputation: 356

Implement like below ...

$('#sel1').change(function(){
    var value = $(this).val();
    // here redirect to link with item_count value
});

Upvotes: 2

Related Questions