Reputation: 29
I want to filter my table of users on my page. I can do this but only for the first page. When I click on the second page everything gets reverted back to default while it should remember the form inputs. This is my code:
my PHP page:
<h1>users</h1>
{{--message voor als een user wordt aangepast. Forget en save zorgen ervoor dat de message niet heel de tijd opnieuw wordt getoond--}}
@if(Session::has('flash_message'))
<div id="editmessage" class="alert alert-success">
{{ Session::get('flash_message') }}
{{ Session::forget('flash_message') }}
{{ Session::save() }}
</div>
@endif
<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" {{ request()->name }} value="name">Name</option>
<option class="genrekeuze" {{ request()->email }} 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>
<hr>
{{--Wordt alleen getoond als er geen users zijn (zie script_after)--}}
<div style="display: none;" id="errormessage" class="alert alert-danger alert-dismissible fade show">
Can't find any users
<button type="button" class="close" data-dismiss="alert">
<span>×</span>
</button>
</div>
{{ $users->links() }}
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>#</th>
<th>user</th>
<th>E-mail</th>
<th>active / admin</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="usertable">
@foreach ($users as $user)
<tr>
<td data-id="{{$user->id}}">{{$user->id}}</td>
<td data-name="{{$user->name}}">{{$user->name}}</td>
<td data-mail="{{$user->email}}">{{$user->email}}</td>
@if ($user->active==0 && $user->admin==0)
<td>NO / NO</td>
@endif
@if ($user->active==1 && $user->admin==1)
<td>YES / YES</td>
@endif
@if ($user->active==0 && $user->admin==1)
<td>NO / YES</td>
@endif
@if ($user->active==1 && $user->admin==0)
<td>YES / NO</td>
@endif
{{--edit en delete buttons verwijderen voor admin--}}
@if($user->id!=1)
<td>
<div class="btn-group btn-group-sm">
<a href="/admin/users/{{$user->id}}/edit" class="btn btn-outline-success btn-edit"
data-toggle="tooltip" data-name="{{$user->name}}" title="Edit {{$user->name}}"><i class="fas fa-edit"></i></a>
<a href="#!" class="btn btn-outline-danger btn-delete"
data-toggle="tooltip" data-id="{{$user->id}}" data-name="{{$user->name}}" title="Delete {{$user->name}}">
<i class="fas fa-trash"></i>
</a>
</div>
</td>
@endif
</tr>
@endforeach
</tbody>
</table>
</div>
@endsection
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(15);
$result = compact('users');
Json::dump($result);
//naar view met data
return view('admin.users.users', $result);
}
I don't know whether the fault is in my page or in my controller. Thanks for reading.
Upvotes: 1
Views: 871
Reputation: 411
you can append parameters to $users->links()
So, you will use something like {{ $users->appends(request()->except('page'))->links() }}
reference: https://github.com/laravel/framework/issues/19441
Upvotes: 1