TP6学习坑三:TP6分页样式及点击页数 搜索参数及其他参数丢失的解决方法

TP6学习分页时候,按照学习手册,出现分页不理想
一、先来看默认情况下,ThinkPHP6 自带的分页样式
1、控制器 DemoController.php 代码如下:
$res= a r c h i v e s − > d b ( ) − > w h e r e ( ′ t y p e i d ′ , archives->db() ->where('typeid', archives>db()>where(typeid,tid)->order(‘add_time’, ‘desc’)->paginate(2);

return view(‘list_article’, [‘res’ => $res]);
2、视图代码

{$res|raw}
3、完整分页的样式 如图所示: ![在这里插入图片描述](https://img-blog.csdnimg.cn/59c9a6bad9c54fd3b9a1bbfaf1621141.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3o0MDk2NTUxMzY=,size_16,color_FFFFFF,t_70) 4、简洁分页的样式

如图所示
在这里插入图片描述
5、尝试分页的情况下,网址中带搜索条件

…index.html?title=傻傻的

此时,点击下一页,会发现,搜索条件itle=傻傻的 丢失了,其他参数也丢失了

二、下面就来解决这些问题
1、先来解决默认分页样式中的 《 》 上一页,下一页的小箭头的问题

(1)把 Bootstrap 分页类复制过来

ThinkPHP 中的 Bootstrap 分页类的位置:

/vendor/topthink/think-orm/src/paginator/driver/Bootstrap.php

把这个分页类放到如下的位置:

首先在 /app/ 目录下,新建 common 文件夹

/app/common/Bootstrap.php

(2)打开这个类文件
修改 namespace app\common;
第 27 行 把 « 修改为 上一页
即:
protected function getPreviousButton(string $text = “«”): string
修改为:
protected function getPreviousButton(string $text = “上一页”): string
第 46 行 把 » 修改为 下一页
即:protected function getNextButton(string $text = ‘»’): string
修改为:
protected function getNextButton(string $text = ‘下一页’): string
(3)修改配置参数

文件位置:/app/provider.php

新增如下代码:
// 自定义分页类

//‘think\Paginator’ => ‘app\common\Bootstrap’
在这里插入图片描述
2、完整分页时,对分页样式的优化
在模板视图文件中添加如下 CSS 代码:

/* 前台 完整分页 分页效果 - bootstrap 样式 start */
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 20px 0;
  border-radius: 4px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 6px 12px;
  margin-left: -1px;
  line-height: 1.42857143;
  color: #337ab7;
  text-decoration: none;
  background-color: #fff;
  border: 1px solid #ddd;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-top-left-radius: 4px;
  border-bottom-left-radius: 4px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-top-right-radius: 4px;
  border-bottom-right-radius: 4px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eee;
  border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #fff;
  cursor: default;
  background-color: #337ab7;
  border-color: #337ab7;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #777;
  cursor: not-allowed;
  background-color: #fff;
  border-color: #ddd;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 10px 16px;
  font-size: 18px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-top-left-radius: 6px;
  border-bottom-left-radius: 6px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-top-right-radius: 6px;
  border-bottom-right-radius: 6px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-top-left-radius: 3px;
  border-bottom-left-radius: 3px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-top-right-radius: 3px;
  border-bottom-right-radius: 3px;
}
/* 前台 完整分页 分页效果 - bootstrap 样式 end */

分页效果,如图所示:
在这里插入图片描述
3、简洁分页时,对分页样式的优化
在模板视图文件中添加如下 CSS 代码:

/* WAP 简洁分页 分页效果 - bootstrap 样式 start */
ul.pager li { margin-left:10px; margin-right:10px;}
.pager {
  padding-left: 0;
  margin: 20px 0;
  text-align: left;
  list-style: none;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #eee;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #777;
  cursor: not-allowed;
  background-color: #fff;
}
/* WAP 简洁分页 分页效果 - bootstrap 样式 end */

分页效果,如图所示
在这里插入图片描述
4、分页时,搜索条件丢失的解决方法
只需要把 paginate 方法,稍作如下调整,即可完美解决

(1)完整分页时

将 paginate 方法,由
// 完整分页
l i s t = D b : : n a m e ( ′ n e w s ′ ) − > f i e l d ( ′ n e w s i d , n e w s t i t l e ′ ) − > w h e r e ( list = Db::name('news')->field('news_id, news_title')->where( list=Db::name(news)>field(newsid,newstitle)>where(where)->order(‘news_id desc’)->paginate([‘list_rows’=>3, ‘query’=>request()->param()], false);

// 简洁分页
l i s t = D b : : n a m e ( ′ n e w s ′ ) − > f i e l d ( ′ n e w s i d , n e w s t i t l e ′ ) − > w h e r e ( list = Db::name('news')->field('news_id, news_title')->where( list=Db::name(news)>field(newsid,newstitle)>where(where)->order(‘news_id desc’)->paginate([‘list_rows’=>3, ‘query’=>request()->param()], true);

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. `@RequestMapping("/list")`: 声明该方法处理的请求路径为"/list"。 2. `public String list(Integer p, Integer pageSize, Model model)`: 定义了一个名为"list"的方法,返回一个String类型的值,并接收参数:p,pageSize和model。其中p和pageSize是分页查询数据参数,model是Spring MVC中的数据模型对象,用于将数据传递给前端视图。 3. `p = null == p ? 1 : p;`: 判断p是否为null,如果是则将p赋值为1,否则p保持原值。 4. `pageSize = null == pageSize ? 10 : pageSize;`: 判断pageSize是否为null,如果是则将pageSize赋值为10,否则pageSize保持原值。 5. `Page<Student> page = PageHelper.startPage(p, pageSize);`: 使用MyBatis分页插件PageHelper开始分页,将当前页和每页显示的数据条数传入。 6. `List<Apply> applyList = applyService.list();`: 调用applyService对象的list()方法获取所有申请信息的列表,将其赋值给applyList变量。 7. `SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");`: 创建一个SimpleDateFormat对象sdf1,用于格式化日期。 8. `applyList.forEach(apply -> { apply.setApplyTimeStr(sdf1.format(apply.getApplyTime())); });`: 遍历applyList列表,对于每个申请对象apply,调用setApplyTimeStr()方法,将该申请对象的申请时间字段格式化成"yyyy-MM-dd HH:mm"的字符串,并将其赋值给申请对象的一个新字段applyTimeStr。 9. `model.addAttribute("repairList", applyList);`: 将申请信息列表applyList添加到数据模型中,绑定到名为"repairList"的属性上。 10. `model.addAttribute("cp", page.getPageNum());`: 将当前页号page.getPageNum()添加到数据模型中,绑定到名为"cp"的属性上。 11. `model.addAttribute("tp", page.getPages());`: 将总页数page.getPages()添加到数据模型中,绑定到名为"tp"的属性上。 12. `model.addAttribute("total", page.getTotal());`: 将总记录数page.getTotal()添加到数据模型中,绑定到名为"total"的属性上。 13. `model.addAttribute("pageListURL", "repair/list");`: 将分页查询数据的请求路径"repair/list"添加到数据模型中,绑定到名为"pageListURL"的属性上。 14. `return "applyinfo/applyinfoList";`: 返回一个视图名"applyinfo/applyinfoList",将数据模型中的属性和值传递给该视图。视图将使用这些属性和值渲染页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值