首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Zend Framework 留言板加入分頁功能實作教學(使用 Zend_Paginator)

     編輯:PHP 相關知識

Zend Framework 留言板加入分頁功能實作教學

承接上一篇基本留言板教學,本文示範如何整合 Zend_Paginator 元件為留言列表加入分頁,提升大量資料時的瀏覽體驗與效能。

控制器修改:indexAction 整合 Paginator

於 IndexController.php 的 indexAction() 中建立分頁器:

<?php
public function indexAction() {
    $message = new Message();
    $this->view->arrReviews = $message->getAllReMessage(); // 回覆資料不分頁

    $page = 1;
    $numPerPage = 3; // 每頁 3 筆
    if (isset($_GET['page']) && is_numeric($_GET['page'])) {
        $page = $_GET['page'];
    }

    $allMessages = $message->getAllMessage(); // 取得所有主留言陣列
    $paginator = Zend_Paginator::factory($allMessages);
    $paginator->setCurrentPageNumber($page)
              ->setItemCountPerPage($numPerPage);

    $this->view->paginator = $paginator;
    echo $this->view->render('header.phtml');
    echo $this->view->render('message/index.phtml');
    echo $this->view->render('footer.phtml');
}
?>

建立分頁樣式模板:pagestyle.phtml

於 views/scripts/pagestyle.phtml 定義分頁 HTML 結構(採用 Elastic 模式):

<?php if ($this->pageCount): ?>
<div class="paginationControl">
    <?php if (isset($this->previous)): ?>
        <a href="/index/index/?page=previous; ?>">< 上一頁</a> |
    <?php else: ?>
        <span class="disabled">< 上一頁</span> |
    <?php endif; ?>
    <?php foreach ($this->pagesInRange as $page): ?>
        <?php if ($page != $this->current): ?>
            <a href="/index/index/?page="></a> |
        <?php else: ?>
            <span class="current"></span> |
        <?php endif; ?>
    <?php endforeach; ?>
    <?php if (isset($this->next)): ?>
        <a href="/index/index/?page=next; ?>">下一頁 ></a>
    <?php else: ?>
        <span class="disabled">下一頁 ></span>
    <?php endif; ?>
</div>
<?php endif; ?>

視圖修改:index.phtml 迭代 Paginator 並輸出分頁

<?php if (count($this->paginator)): ?>
    <?php $i = 1; foreach ($this->paginator as $message): ?>
        <!-- 輸出單筆留言 HTML -->
    <?php endforeach; ?>
    <?php echo $this->paginationControl($this->paginator, 'Elastic', 'pagestyle.phtml'); ?>
<?php else: ?>
    <p>目前沒有留言</p>
<?php endif; ?>

補充說明

  • 入口檔 index.php 需定義常數 WEB_ROOT 供分頁連結生成絕對路徑。
  • Zend_Paginator 也支援 Sliding、Jumping 等其他捲動模式,可依設計需求切換。

完整原始碼下載

含分頁功能的完整留言板專案可至 本站下載區 取得。

延伸閱讀

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved