php post提交后分页,thinkPHP使用post方式查询时分页失效的解决方法
时间: 2024-01-27 22:02:52 浏览: 128
当使用POST方式提交表单时,ThinkPHP默认使用 $_POST 变量来获取提交的数据,而 $_POST 是无法直接获取分页参数的,因此分页失效了。但是你可以使用 $_REQUEST 变量来获取提交的数据,它可以同时获取 GET 和 POST 的数据。具体的解决方法如下:
1. 修改控制器中的查询代码,使用 $_REQUEST 变量来获取提交的数据。
```php
public function index() {
$pageSize = 10;
$page = isset($_REQUEST['page']) ? intval($_REQUEST['page']) : 1;
$where['name'] = isset($_REQUEST['name']) ? $_REQUEST['name'] : '';
$list = Db::name('user')->where($where)->paginate($pageSize, false, ['page' => $page]);
$this->assign('list', $list);
return $this->fetch();
}
```
2. 修改模板中的分页代码,使用 $_REQUEST 变量来生成分页链接。
```html
<div class="page">
<ul>
<?php if ($list->currentPage() > 1): ?>
<li><a href="<?php echo url('/index', ['page' => $_REQUEST['page'] - 1]); ?>">上一页</a></li>
<?php endif; ?>
<?php for ($i = 1; $i <= $list->lastPage(); $i++): ?>
<li <?php if ($list->currentPage() == $i): ?>class="active"<?php endif; ?>><a href="<?php echo url('/index', ['page' => $i]); ?>"><?php echo $i; ?></a></li>
<?php endfor; ?>
<?php if ($list->currentPage() < $list->lastPage()): ?>
<li><a href="<?php echo url('/index', ['page' => $_REQUEST['page'] + 1]); ?>">下一页</a></li>
<?php endif; ?>
</ul>
</div>
```
通过这种方式,就可以在使用 POST 方式提交表单时,正确地生成分页链接,实现分页功能。
阅读全文