Knp Paginator с формой поиска - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь использовать KNP paginator с поиском по форме.

Все работает нормально, но когда я перехожу на страницу 2, они отправляют меня обратно на страницу 2 без результатов поиска.

Я использовал методы POST для своей ветки, потому что, если я использую методы GET, ничего не происходит.

Я нашел много постов по моей проблеме, но я не знаю, как я могу ее решить.Если у кого-то есть какие-то советы для меня, пожалуйста, не могли бы вы мне помочь, пожалуйста.

Это мой код:

public function rechercheAction() {
        $form = $this->createForm(RechercheClientType::class);
        return $this->render('admin/client/recherche.html.twig',[
                'form' => $form->createView()
            ]
        );
    }


    /**
     * @Route("/admin/client/recherche", name="recherche_client")
     */
    public function rechercheTraitementAction(PaginatorInterface $paginator,Request $request) {


        $session = $request->getSession();


        $form = $this->createForm(RechercheClientType::class);
        $form->handleRequest($request);

        $query = $this->repository->recherche($form['rechercheClient']->getData());

        $users = $paginator->paginate(
            $query,
            $request->query->getInt('page',1), 10
        );

        //Compte le nombre d'éléments recherchés
        $count = count($query);




        return $this->render('admin/client/data-tables.html.twig',[
                'users' => $users,
                'count' =>$count,
            ]
        );
    }

<!-- recherche.html.twig -->
<form action="{{ path('recherche_client') }}" method="post">
{{ form_widget(form.rechercheClient, { 'attr': { 'class' : "form-control",'placeholder': "Rechercher par ID, nom , prénom, mail ou société"} }) }}
{{ form_widget(form) }}
</form>

<!-- data-table.html.twig -->
  <div class="" style="float:right">

   {{ knp_pagination_render(users) }}


   </div>

public function recherche($chaine) {
    return $this->createQueryBuilder('u')
        ->andWhere('u.nom like :chaine')
        ->orWhere('u.prenom like :chaine')
        ->orWhere('u.email like :chaine')
        ->orWhere('u.societe like :chaine')
        ->orderBy('u.id')
        ->setParameter('chaine','%'.$chaine.'%')
        ->getQuery()
        ->getResult();
}

1 Ответ

0 голосов
/ 01 марта 2019

Amigo У меня была та же проблема, но так как мы по-разному интерпретировали код, я покажу свой пример.

$searchForm = $this->createFormBuilder($property)
            ->add('type', EntityType::class, [
                'class' => Type::class,
                'choice_label' => 'name',
                'mapped' => false,
                'expanded' => true,
                'multiple' => true,
                'label' => false,
            ])
            ->add('filter', SubmitType::class, [
                'attr' => [
                    'class' => 'btn btn-outline-dark btn-rounded waves-effect'
                ]
            ])
            ->setMethod('GET')
            ->getForm();

->setMethod('GET') сделал разницу

...