0

この Symfony バンドルを使用しようとしています: https://github.com/KnpLabs/KnpPaginatorBundle

ドキュメントでは、彼らはそれをコントローラーとして使用しています。そのため、サービス コンテナやリクエスト オブジェクトに簡単にアクセスできます。

しかし、私が理解している限りでは、Doctrine クエリはコントローラではなくリポジトリにあるはずですよね? そして、私はすでにレコードを返す関数を持っています。ページネーション サービスがインスタンス化時に「結果」を期待していないだけです。クエリが必要です。したがって、「結果」をコントローラーに返すことはできませんが、この関数の途中でページネーターを使用します。

一方、サービスやリクエストで遊ぶようなものは、実際にはコントローラーに属しています。

では、これはどのように行うべきですか?最初は、「knp_paginator」サービスとリクエスト オブジェクトをリポジトリに注入することを考えました。しかし、私はこれが正しい方法だとは思いません。

4

3 に答える 3

1

たとえば、$qb がカスタム リポジトリによって返される場合 (結果を返すのではなく、そのクエリビルダーのみを返す)

$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
    $qb->getQuery(),
    $request->query->getInt($pageParameterName, 1),
    $perPage,
    array('pageParameterName' => $pageParameterName)
);
于 2016-03-21T12:59:18.057 に答える