You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Yii框架新手求指导:为网站新闻页面添加分页

Hey Kevin, 作为Yii新手要给新闻列表加分页其实没那么复杂,我来一步步带你搞定!

Yii框架实现新闻列表分页指南

第一步:完善控制器代码(NewsproductsController.php)

你已经引入了Pagination类,接下来只需要在对应的action方法(比如actionCenter())里补充分页逻辑就行:

  1. 先构建获取所有新闻的基础查询
  2. 实例化分页组件,设置每页展示条数和总数据量
  3. 给查询语句加上分页限制,拿到当前页的新闻数据
  4. 把数据和分页对象传给视图

示例代码如下:

<?php
use yii\data\Pagination;
use app\models\News; // 这里替换成你实际的新闻模型类名

class NewsproductsController extends Controller
{
    public function actionCenter()
    {
        // 1. 构建查询语句,获取所有新闻的数据源
        $query = News::find();

        // 2. 初始化分页组件,设置每页显示18条(和你当前展示的数量一致)
        $pagination = new Pagination([
            'defaultPageSize' => 18,
            'totalCount' => $query->count(), // 自动统计总新闻数
        ]);

        // 3. 筛选出当前页的新闻数据
        $newsList = $query->offset($pagination->offset)
            ->limit($pagination->limit)
            ->all();

        // 4. 把数据传递给视图文件
        return $this->render('center', [
            'newsList' => $newsList,
            'pagination' => $pagination,
        ]);
    }
}

注意:记得把News替换成你项目里实际的新闻模型类,如果模型在其他命名空间下,要调整对应的引入路径哦

第二步:在视图文件(center.php)中添加分页控件

视图里除了保留你原来循环展示新闻的代码,还要加上Yii自带的分页渲染代码,这样前端才能显示分页按钮:

<!-- 这里是你原来的新闻列表循环代码 -->
<?php foreach ($newsList as $news): ?>
    <!-- 你的每条新闻展示HTML结构 -->
<?php endforeach; ?>

<!-- 渲染分页按钮 -->
<?= yii\widgets\LinkPager::widget([
    'pagination' => $pagination,
    'options' => ['class' => 'pagination'], // 可以自定义CSS类来美化样式
]) ?>

第三步:样式美化(可选)

默认的分页控件样式比较基础,你可以通过自定义options里的CSS类,结合Bootstrap或者自己的样式表,调整分页按钮的颜色、间距等,让它更贴合你的网站风格。

常见问题排查

  • 如果分页没生效,检查查询语句有没有漏加offset()和limit()方法
  • 确认模型类引入正确,$query->count()能正常统计出总新闻数量
  • 视图里要确保$pagination变量拼写正确,是从控制器传递过来的有效对象

这样操作之后,你的新闻列表就能正常分页啦,用户可以通过点击页码或者上下页按钮浏览更多新闻内容~

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:59:34