1

私はこのようなフォーム検索を作成しています:

検索を実行すると、10 個の要素を含む最初のページが表示されますが、ページ 2 をクリックすると、基準検索を考慮せずにデータベースのすべての要素が表示されます。理解できません

class FrontController extends Controller
{
       /**
        * @Route("/", name="front_homepage")
        */
        public function indexAction(){

             $form = $this->createForm(SearchType::class);

             return $this->render('FrontBundle::layout.html.twig', array(
                 'form' => $form->createView(),
             ));
        }

}


class SearchController extends Controller
{
    /**
     * @param Request $request
     * @Route("/search/form", name="front_search_form")
     */
    public function searchOffreAction(Request $request)
    {
        $em = $this->getDoctrine()->getManager();

        $form = $this->createForm(SearchType::class);

        $form->handleRequest($request);

        if($form->isSubmitted()) {

           $entity = $em->getRepository('CoreBundle:Foo')->findByCritere($form->getData());

            /** @var Paginator $paginator */
            $paginator  = $this->get('knp_paginator');
            $result = $paginator->paginate(
                $entity,
                $request->query->getInt('page', 1),
                10
            );

            return $this->render('FrontBundle:Search:offre.html.twig', ['offres' => $result]);

        }

       return $this->createNotFoundException();
    }

}

皆さん、ありがとうございました、

4

1 に答える 1

1

$entity問題は、結果ではなくクエリである必要があることだと思います。

代わりにこれを試してください:

$em = $this->getDoctrine()->getManager();
$dql   = "SELECT f FROM CoreBundle:Foo f";
$query = $em->createQuery($dql);

/** @var Paginator $paginator */
$paginator  = $this->get('knp_paginator');
$result = $paginator->paginate(
     $query,
     $request->query->getInt('page', 1),
     10
);

うまくいくかどうかはわかりませんが、試してみてください。

于 2016-06-17T15:18:38.170 に答える