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与第一页不同(变成表的字段名)。