我对此代码采取了措施:
$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
哈维
答案 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()
检索。结果是数组。
进一步阅读:
希望有所帮助。