ThinkPHP实现在存在分页时再显示分页

发布时间:2022-05-31浏览次数:880 次
一般在我们制作前端切图页面时,会默认的为客户写好分页样式,因为大多数CMS或程序框架在分页这块都有自己独特的风格,因此,在进行前端切图之前,一般我们会与客户进行

一般在我们制作前端切图页面时,会默认的为客户写好分页样式,因为大多数CMS或程序框架在分页这块都有自己独特的风格,因此,在进行前端切图之前,一般我们会与客户进行沟通。

今天接到一个客户的对接需求:希望仅在产生分页的时候再生成分页HTML,而在信息条数不足以分页时,不显示分页。一般情况,使用CSS即可完成这样的需求,但是容纳分页的盒子元素,还是要存在于页面上的。该客户的需求需要从程序端来操作。客户使用的程序框架是ThinkPHP,以下总结下我们的解决思路:

在ThinkPHP中,框架默认提供了分页类,但是一般我们都使用的是paginate分页方法,即通过paginate获取列表数据$list,然后在HTML页面中通过{$list|raw}的标签即可调取分页,或者也可以在后端,通过$page=$list->render();来获取单独的分页变量,再在前端渲染,如下:

<div class="page">{$list|raw}</div>
// 或使用直接分页变量
<div class="page">{$page}</div>

但是上述这两种方法都没办法进行判断,我们打印$list发现其存在受保护的属性:total和per_page,即总条数和每页显示数量。但是因为这些属性是protected类型的,而且默认获取到的$list是数据集。因此,我们需要先通过toArray()方法将其转为数组格式后,再输出,这样的变量我们可以从中获取到total和per_page属性,从而进行判断,数据总条数是否大于每页显示数量,大于则显示分页,实现代码如下:

PHP代码:

View::assign([
	'list' => $list->toArray(),
	'page' => $list->render()
]);

HTML代码:

{gt name="$list.total" value="$list.per_page"}
<div class="page">{$page|raw}</div>
{/gt}

以上是在ThinkPHP中使用程序判断数据总条数是否大于每页显示数量,进而显示分页的方法和思路。其他的框架和程序也应都存在其对应的方法,属于比较冷门且很小众的一个需求,做以记录,以便大家用到时可以参考。

扫一扫,在手机上查看