Salut,
J'ai crée un code pour faire un recherche avec multicritères mais il marche seulement si tous les champs sont remplis dans le formulaire et si un champ est vide , la requête n'affiche rien. Comment je peux faire un "where" seulement sur les champs non vide ? merci d'avance
Controller:
Repository
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public function listSearchAction($page, Request $request) { if ($request->getMethod() == 'GET') { $em = $this->getDoctrine()->getManager(); $paginator = $this->get('knp_paginator'); $name = $request->query->get('name'); $city = $request->query->get('city'); $qb = $em->getRepository('ProjectAgenceBundle:Agence')->getListSearchAgencesFrontend($name, $city); $pagination = $paginator->paginate( $qb, $request->query->get('page', $page),10); } return $this->render('ProjectFrontendBundle:Agence:agence-search-list-view.html.twig',array( 'pagination' => $pagination, 'mode'=> $mode, )); }
from.twig
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public function getListSearchAgencesFrontend($name, $city) { $qb = $this->createQueryBuilder('a') ->leftJoin('a.logo', 'l') ->addSelect('l') ->Where('a.enabled = 1') ->andWhere('a.city = :city') ->setParameter('city', $city) ->andWhere('a.name LIKE :name') ->setParameter('name', '%'.$name.'%'); return $qb; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <form action="{{ path('frontend_agences_list_search') }}" method="get"> <div class="form-group"> <label>Nom agence</label> {{ form_widget(left_form_search.name) }} </div> <div class="form-group"> <label>Ville</label> <div class="selector"> {{ form_widget(left_form_search.city) }} </div> </div> {{ form_rest(left_form_search) }} <br /> <button type="submit" class="btn-medium icon-check uppercase full-width">recherche</button> </form>
Partager