簡體   English   中英

在Symfony2中使用Pagerfanta進行分頁的正確方法是什么

[英]What is correct way to use Pagerfanta for pagination in Symfony2

我已經讀過,Pagerfanta是Symfony2的首選分頁插件,但我在使其正常工作時遇到了一些麻煩。 我已經下載了pagerfanta和PagerfantaBundle的代碼,並按照WhiteOctober Github自述文件本教程中的描述安裝它們。 我很確定我的控制器中的代碼是可以的,但我的模板文件有問題。

我的控制器代碼:

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個對象的列表。 但是,尋呼機的呈現只是PreviousNext作為一個單詞(不是鏈接,沒有頁面1,2,3等)。

如果我將?page=2添加到URL,它不會顯示列表中的下10個項目。

在添加分頁代碼之前,我沒有更改路徑,因為文檔說:

使用變量“page”自動為當前路由生成路由以傳播頁碼。

...但我想知道錯誤的路由是否是問題的一部分。 假設是這種情況,我不知道如何繼續這樣做。

我一直無法找到上面鏈接到的其他來源的任何說明,所以如果成功實現此功能的人可以分享他們如何做到這一點的詳細信息將會很棒。

我認為您的應用程序不知道如何解析?page=2到控制器操作。

在您的路線中添加{page}(如@AdrienBrault所述),您希望對其進行分頁。

像這樣:

my_index:
  pattern:  /{page}
  defaults: { _controller: MyTestBundle:Object:index, page: 1 }
  requirements:
    _method:  GET
    page: \d+

PagerFantaBundle(我猜)會嘗試猜測正確的路線。

為我工作。

我不得不在我的路由中使用'currenPage'而不是'page',我找到了一種方法:

{{ pagerfanta(pager, 'my_pager_view', {'pageParameter':'[currentPage]'}) }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM