PagerfantaはSymfony2のページングプラグインですが、正しく動作させるには問題があります。私はpagerfantaとPagerfantaBundleのコードをダウンロードし、WhiteOctober Github readme fileとthis tutorialに記載されているようにインストールしました。コントローラのコードは大丈夫ですが、テンプレートファイルに問題があります。Symfony2のページングにPagerfantaを使用する正しい方法
私のコントローラコード:私のテンプレートで
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ワード(リンクではなく、ページ1,2,3などではない)だけのPreviousNextです。
URLに?page=2
を追加すると、リストに次の10項目が表示されません。伝播する
をルートが現在のルートのために自動的に生成されている変数を使用して「ページ」:
私は改ページコードを追加する前にドキュメントが言うので、私はしたされているものからのルートを変更していませんページ番号。
...間違ったルーティングが問題の一部であるかどうかは疑問です。これが当てはまると仮定すると、私はこれをどのように進めるべきか分かりません。
私は上にリンクしたソース以外の指示を見つけることができなかったので、これをうまく実装した人が彼らのしたことの詳細を分かち合うことができれば嬉しいです。
はあなたのルートパターンをページ属性が含まれていますか?つまり/ articles/{page} ' – AdrienBrault
更新:コントローラに問題があるようです。具体的には、DocrtineORMAdapterが正常に動作しません。つまり、 '$ pagerfanta-> getNbResults()'は0を返します。したがってPrevousとNextの間にページはありません。ドキュメントには、コンストラクタに渡されるパラメータがQueryまたはQueryBuilderになる可能性があることが記載されていますが、後者のみが正しいと思われます。 '$ pagerfanta = new Pagerfanta(new ArrayAdapter($ query-> getResult())'に変更すると正しい数の結果が返されます@AdrienBrault - あなたがルートパターンに提案した変更を行いました。 –
だから私はまだなぜの質問が残っていますか?page =はドキュメントごとに自動的にルートに追加されず、なぜCSSが適用されないのですか(スペースがないか書式なしでPrevious123Nextのようになりました) –