1

I'm trying to make a filter for my page and I want to remember the form values. I've tried the old() function from laravel and some other things but that didn't work. Maybe I'm doing something wrong. Here is my code:

blade.php:

<form method="get" action="/admin/users" id="searchForm">
        <div class="row">
            <div class="col-sm-4 mb-2 lg-4">
                <input type="text" class="form-control" name="name" id="name"
                       value="{{ request()->name }}" placeholder="Filter user by name or email">
            </div>
            <div class="col-sm-4 mb-2 lg-4">

                <select class="form-control" name="userfilter" id="userfilter">
                    <option class="genrekeuze" value="id">Sort By ID (default)</option>
                    <option class="genrekeuze" value="name">Name</option>
                    <option class="genrekeuze" value="email">email</option>
                    <option class="genrekeuze" value="active">active</option>
                    <option class="genrekeuze" value="admin">admin</option>
                </select>

            </div>
            <div class="col-sm-4 mb-2 lg-4">

                <select class="form-control" name="direction" id="direction">

                    <option id="richtingboven" class="genrekeuze" value="asc" >ascending</option>

                    <option id="richtingonder" class="genrekeuze" value="desc">descending</option>

                </select>

            </div>
            <div class="col-sm-2 mb-2">
                <button style="display: inline;" type="submit" class="btn btn-success btn-block">Search</button>
            </div>
        </div>
    </form>

Here is my controller:

public function index(Request $request)
    {

        //vraag input van zoekbalk en option list
        $zoeknaam = '%' . $request->input('name') . '%';
        $vallist=$request->input('userfilter','id');
        $direction=$request->input('direction','asc');

        //users uit database halen, paginate en where functie voor filteren
        $users = User::where('name', 'like', $zoeknaam)
            ->orWhere('email', 'like', $zoeknaam)
            ->orderBy($vallist,$direction)
            ->paginate(10);


        $result = compact('users');

        Json::dump($result);

        //naar view met data
        return view('admin.users.users', $result);
    }

The input seems to remember its value automatically but the 2 dropdowns (#userfilter and #direction) don't. If anyone knows a solution feel free to comment.

Thanks for reading!

1 Answer 1

2

Setting the value for select tags won't actually set the option. So doing

<select name="myselect" value="{{old('myselect')}}`">

wont work. The option needs to have the selected attribute for it to be selected, so you need to add the selected attribute to the option whose value matched the old() value. Let me give a demonstration.

<select class="form-control" name="userfilter" id="userfilter">
    <option class="genrekeuze" value="id" @if(old('userfilter')=='id') selected @endif>Sort By ID (default)</option>
    <option class="genrekeuze" value="name" @if(old('userfilter')=='name') selected @endif>Name</option>
    <option class="genrekeuze" value="email" @if(old('userfilter')=='email') selected @endif>email</option>
    <option class="genrekeuze" value="active" @if(old('userfilter')=='active') selected @endif>active</option>
    <option class="genrekeuze" value="admin" @if(old('userfilter')=='admin') selected @endif>admin</option>
</select>

Similarly, for the direction

<select class="form-control" name="direction" id="direction">
    <option id="richtingboven" class="genrekeuze" value="asc" @if(old('direction')=='asc') selected @endif>ascending</option>
    <option id="richtingonder" class="genrekeuze" value="desc" @if(old('direction')=='desc') selected @endif>descending</option>
</select>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.