使用PropelPager的页面的URL是什么?

时间:2011-01-19 18:59:04

标签: symfony1 propel

我对此代码采取了措施:

$c = new Criteria();
$c->addJoin(sfGuardUserProfilePeer::USER_ID, sfGuardUserGroupPeer::USER_ID, Criteria::INNER_JOIN);
$c->add(sfGuardUserGroupPeer::GROUP_ID, 2 );

$this->pager = new PropelPager($c, 'sfGuardUserProfilePeer', 'doSelect', $page = 2, $rowsPerPage = 1);

在相应的模板中:

<table>
<?php foreach ($pager->getResult() as $book): ?>
  <tr>
    <td><?php echo $book->getName() ?></td>
    <td><?php echo $book->getSurname() ?></td>
  </tr>
<?php endforeach; ?>
</table>

当我调用该操作时,我得到第一页的第一个结果,但页面2的URL是什么?

谢谢!

sf 1.4 / pr 1.5

哈维

1 个答案:

答案 0 :(得分:1)

首先,您必须更正代码:

$this->pager = new PropelPager($c, 'sfGuardUserProfilePeer', 'doSelect', $page, $rowsPerPage);

其次,只有您定义了操作中页码的处理方式。我更喜欢网址中的page参数:

// $request - a sfWebRequest object passed to your action
$page = $request->getParameter('page', 1); // first page by default
$this->pager = new PropelPager($c, 'sfGuardUserProfilePeer', 'doSelect', $page = 2, $rowsPerPage = 1);

然后你必须手动生成视图中页面的链接:

<table>
<?php if ($pager->getNbResults()): ?>
    <?php foreach ($pager->getResults() as $book): ?>
      <tr>
        <td><?php echo $book->getName() ?></td>
        <td><?php echo $book->getSurname() ?></td>
      </tr>
    <?php endforeach; ?>
<?php endif; ?>
</table>

<?php if ($pager->haveToPaginate()): ?>
  display pagination here and generate "uri/?page=N" links
<?php endif; ?>

因此,所有可用页面都由$pager->getLinks()检索。结果是数组。

进一步阅读:

希望有所帮助。