我已經讀過Pagerfanta是Symfony2的首選分頁插件,但是我在使它正常工作時遇到了一些麻煩。我已經下載了pagerfanta和PagerfantaBundle的代碼,並按照WhiteOctober Github readme file和this tutorial中的說明安裝它們。我很確定我的控制器中的代碼是可以的,但是我的模板文件有問題。使用Pagerfanta在Symfony2中進行分頁的正確方法是什麼
我的控制器代碼:
public function indexAction($page = null)
{
...
$query = $em->createQuery('SELECT something FROM some_table');
$adapter = new DoctrineORMAdapter($query);
$pager = new Pagerfanta($adapter);
$pager->setMaxPerPage(10);
if (!$page) $page = 1;
try {
$pager->setCurrentPage($page);
}
catch(NotValidCurrentPageException $e) {
throw new NotFoundHttpException('Illegal page');
}
return $this->render('MyBundle:MyEntity:index.html.twig', array(
'pager' => $pager,
));
}
在我的模板:
...
<table>
{% for object in pager.currentPageResults %}
<tr>
<td>{{ object.attribute1 }}</td>
<td>{{ object.attribute2 }}</td>
<td>{{ object.attribute3 }}</td>
</tr>
{% endfor %}
</table>
{% if pager.haveToPaginate %}
{{ pagerfanta(pager) }}
{% endif %}
當我去的網頁,我得到的第一個10個對象的列表。然而,尋呼機的渲染只是一個字的上一個下一個(不是鏈接和頁面1,2,3等)。
如果我將?page=2
添加到URL中,它不會顯示列表中的下10個項目。
我並沒有改變,從什麼是之前我添加分頁代碼,因爲文件說的路線:使用變量「頁」來傳播
的路由對於當前的路線自動生成頁碼。
...但我不知道是否路由不正確是問題的一部分。假設情況如此,我不知道如何繼續。
我一直無法找到任何其他我已經鏈接到上面的源代碼的指令,所以如果成功實現此目的的人可以分享他們如何做到這一點的細節,那將是非常好的。
你是否路由模式包括頁面屬性?即'/ articles/{page}' – AdrienBrault
更新:控制器似乎有問題。具體來說,DocrtineORMAdapter無法正常工作(即'$ pagerfanta-> getNbResults()'返回0 - 因此在Prevous和Next之間沒有頁面)。該文檔指出傳遞給構造函數的參數可以是Query或QueryBuilder,但我懷疑只有後者是正確的。當我更改爲'$ pagerfanta = new Pagerfanta(new ArrayAdapter($ query-> getResult())'時,它會返回正確數量的結果。@AdrienBrault - 我對路由模式進行了修改,現在它可以工作,但是不應該需要。 –
所以我仍然留下了爲什麼?page =不會自動添加到路由中,並且爲什麼沒有應用css(現在分頁器看起來像Previous123Next,沒有空格或格式) –