首页 > 解决方案 > 如何在 php laravel 的第二页上保留过滤器选项?

问题描述

我想在我的页面上过滤我的用户表。我可以这样做,但仅限于第一页。当我单击第二页时,所有内容都会恢复为默认值,而它应该记住表单输入。这是我的代码:

我的 PHP 页面:

    <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>&times;</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

我的控制器:

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);
    }

我不知道故障是在我的页面还是在我的控制器中。谢谢阅读。

标签: javascriptphphtmllaravel

解决方案


您可以将参数附加到$users->links() 因此,您将使用类似{{ $users->appends(request()->except('page'))->links() }}

参考:https ://github.com/laravel/framework/issues/19441


推荐阅读