tp6使用自定义分页传参问题
tp6使用自定义分页传参问题
先简单记录下tp6自定义分页操作,以获取文章数据为例:
NO1:处理后端php部分如下
<?php
public function getArticleInfo(){
$articleInfo = Db::name('article')->paginate(10)->order("id desc")->select();
//处理分页
$page = $articleInfo->render();
//将参数整合传入页面
$dat["page"] = $page;
$dat["articles"] = $articleInfo;
View::assign($dat);
return View::fetch('article');
}
NO2:前端页面接受数据分页并展示
<html>
<body>
{foreach $articles as $vo}
<!--此处展示文章内容部分 -->
{/foreach}
<!-- 分页处理如下 -->
{$page|raw}
</body>
</html>
NO3:此时当文章超过限制10条时将会正常展示分页下标,但是我们会经常查询文章分类,标签分类啥的,并且会将参数以get方式传递,此时分页中并不会自动加上这些参数,导致数据展示不准确,操作如下:
<?php
public function getArticleInfo($tagname){
$articleInfo = Db::name('article')->where('tagname', 'like', '%'.$tagname.'%')->paginate(['list_rows'=>10,'query' => request()->param()] )->order("id desc")->select();
//处理分页
$page = $articleInfo->render();
//将参数整合传入页面
$dat["page"] = $page;
$dat["articles"] = $articleInfo;
View::assign($dat);
return View::fetch('article');
}
还有种原始处理方式:
<?php
public function getArticleInfo($tagname){
$articleInfo = Db::name('article')->where('tagname', 'like', '%'.$tagname.'%')->paginate(10)->order("id desc")->select();
//处理分页
$page = $articleInfo->render();
//此处$page分页中并未带入'tagname'参数,所以我自行追加了下再传入页面
$page = str_replace('tag.html?page=', 'tag.html?tagname='.$tagname.'&page=', $page);
//将参数整合传入页面
$dat["page"] = $page;
$dat["articles"] = $articleInfo;
View::assign($dat);
return View::fetch('article');
}
NO4:前端无需修改,OVER;