Recherche avec multicritères , methode GET
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:
Code:
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,
));
} |
Repository
Code:
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;
} |
from.twig
Code:
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> |