8

PagerfantaがSymfony2に最適なページネーションプラグインであることを読みましたが、正しく機能させるのに問題があります。WhiteOctober Github readmeファイルこのチュートリアルの説明に従って、pagerfantaとPagerfantaBundleのコードをダウンロードしてインストールしました。コントローラのコードは問題ないと確信していますが、テンプレートファイルに問題があります。

私のコントローラーコード:

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つの単語としてPreviousNextになります(リンクではなく、ページ1、2、3などはありません)。

URLに追加?page=2すると、リスト内の次の10項目が表示されません。

ドキュメントに次のように記載されているため、ページネーションコードを追加する前のルートから変更しませんでした。

ルートは、変数「page」を使用して現在のルートに対して自動的に生成され、ページ番号が伝達されます。

...しかし、間違ったルーティングが問題の一部であるかどうか疑問に思います。これが事実であると仮定すると、私はこれをどのように進めるかわかりません。

上記でリンクした他のソースからの指示を見つけることができなかったので、これを正常に実装した誰かがそれをどのように行ったかの詳細を共有できれば素晴らしいと思います。

4

2 に答える 2

6

あなたのアプリケーションは?page=2、コントローラーのアクションを解析する方法を知らないと思います。

ルートに{page}を含め(@AdrienBraultが返信したように)、ページネーションを行います。

このような:

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

PagerFantaBundleは(私が推測する)正しいルートを推測しようとします。

私のために働いた。

于 2012-09-26T19:41:12.007 に答える
1

ルーティングで「page」の代わりに「currenPage」を使用する必要があり、これを行う方法を見つけました。

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

于 2017-02-22T18:42:56.970 に答える