php分页使用symfony框架隐藏上一个和下一个按钮

时间:2013-12-13 05:25:52

标签: php pagination symfony1

嗨,我使用symfony框架进行了这个分页,我想知道如果页面已经在第一页中,如何隐藏按钮,所以没有上一个按钮,如果最后一页没有下一个按钮。

我如何才能获得当前页面?

这是我的代码:

<?php if ($pager->haveToPaginate()) :?>
  <div class="pagerWrapper ">
    <nav>
      <ul class="pager"> 
        <?php if($currPage != 1):?>
          <li class="pageNumber"><?php echo link_to('<img alt="Previous Page" src="/images/pager_prev_btn.png" class="page_img" />', url_for('contract/index?page='.$pager->getPreviousPage()), 'class=""' )?></li>
        <?php endif;?>
        <?php foreach ($pager->getLinks() as $page) :?>
          <li class="pageNumber"><?php echo link_to($page, url_for('contract/index?page='.$page), ($page == $pager->getPage()) ?'class="selected"' : 'class=""')?></li>
        <?php endforeach;?>
        <?php if($pager->getLastPage() != $currPage): ?>
          <li class="pageNumber"><?php echo link_to('<img alt="Next Page" src="/images/pager_next_btn.png" class="page_img" />', url_for('contract/index?page='.$pager->getNextPage()),'class=""')?></li>
        <?php endif; ?>
      </ul>
    </nav>
  </div>
<?php endif;?>

继承我的控制器

 public function executeIndex(sfWebRequest $request){
    $currPage = $request->getParameter('page', 1);
    $limit = sfConfig::get('app_contract_list_limit');
    $offset = ($currPage - 1) * $limit;
    $q = ContractTable::getInstance()->getContractList($offset,$limit);
    $this->contractList = $q->execute();

    $this->pager = new sfDoctrinePager('Contract', $limit);
    $this->pager->setQuery($q);
    $this->pager->setPage($request->getParameter('page', 1));     

    $this->pager->init();
  }

请帮助我很困惑,谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用$pager->getPage()获取当前页面 根据 : http://propelorm.org/reference/model-criteria.html#paginating-results

对于第一页和最后一页,您可以使用类似的内容:

if (!$pager->isFirstPage())
{
}
foreach ($pager->getLinks() as $page)
{
}
if (!$pager->isLastPage())
{
}