tp5怎么实现搜索分页能保留搜索条件
作者:
秒速五厘米
实现搜索分页能保留搜索条件 就这么简单
Db::name("table")->where("XXXX")->paginate(10,false,['query'=>request()->param()]);
例子
PHP代码
$get = input('get.'); $phone = input('get.phone'); $email = input('get.email'); $pageParam = ['query' =>[]]; if ($phone) { $userModel->where('phone', 'like', "%{$phone}%"); $this->assign('phone', $phone); $pageParam['query']['phone'] = $phone; } if ($email) { $userModel->where('email', 'like', "%{$email}%"); $this->assign('email', $email); $pageParam['query']['email'] = $email; } $list = $userModel->paginate(3, false, $pageParam); $this->assign('list', $list); $this->assign('title', '会员列表'); $this->assign('breadcrumb', ['后台首页', '用户管理', '会员列表']); return $this->fetch();
HTML代码
<div class="container"> <!-- 查询BEG --> <div class="row"> <div class="col-xs-12"> <div class="me-searchbox"> <form class="form-inline" role="form" method="get"> <div class="form-group"> <label for="phone">手机</label> <input type="text" class="form-control" name="phone" placeholder="手机" value="{$phone ? $phone : '';}"> </div> <div class="form-group"> <label for="email">邮箱</label> <input type="text" class="form-control" name="email" placeholder="邮箱" value="{$email ? $email : '';}"> </div> <button type="submit" class="btn btn-default">查询</button> </form> </div> </div> </div> <!-- 查询END --> <!-- 表格BEG --> <div class="row"> <div class="col-xs-12"> <table class="table table-bordered"> <thead> <tr> <th><input type="checkbox"></th> <th>ID</th> <th>妮称</th> <th>手机</th> <th>邮箱</th> </tr> </thead> <tbody> {volist name='list' id='user'} <tr> <td><input type="checkbox"></td> <td>{$user.id}</td> <td>{$user.nickname}</td> <td>{$user.phone}</td> <td>{$user.email}</td> </tr> {/volist} </tbody> </table> </div> </div> <!-- 表格END --> <!-- 分页导航BEG --> <div class="row"> <div class="col-xs-12"> {$list->render()} </div> </div> <!-- 分页导航END --> </div>
解释:使用 get 方法提交表单,在后台将查询条件作为 paginate() 方法的参数传入,这样查询条件就会写入分页标签的URL中。后台即可以通过表单也可以通过这个URL得到查询条件。
那个input搜索框的name名 必须跟表中对应的字段名一样? 否则就报什么未命名索引 或者 搜索分页以后数据不保留 ?
要求一样。因为分页的get参数列表是 $list = $userModel->paginate(3, false, $pageParam); 方法自动生成的,所以 $pageParam 中使用什么key,就查表的什么字段。而这个key又会成功get参数列表的key。
如果两者不同,要么查表时找不到字段,要么分页后get参数列表的key与第一页不同(变成表的字段名)。