Bonjour,

J'ai un formulaire de recherche qui se compose de deux champs avec obligation de saisie et deux autres champs qui ne sont pas obligatoire.

Lorsque je soumet mon formulaire, une fonction javascript récupère les valeurs du formulaire pour les envoyer à mon contrôleur .

Ma fonction Javascript
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
 
function showResultat() {
/* Champs OBLIGATOIRE*/
var champs1 = document.getElementsById("champs1").value;
var champs2  = document.getElementsById("champs2").value;
/* Champs NON OBLIGATOIRE*/
var champs3= document.getElementsById("champs3").value;
var champs4= document.getElementsById("champs4").value;
 
$.ajax({
    type: "GET",
    url: "{{ path('monControleur') }}",
    data: {'champs1 ': champs1 , 'champs2': champs2 , 'champs3':champs1, 'champs4':champs4},
    cache: false,
    success: function (data) {
        $('#resultat').html(data);
    }
    });
    return false;
    }
L'action de mon contrôleur chargé de récupérer les valeurs saisie afin de les envoyer à ma fonction présente dans mon 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
 
public function showResultatAction(Request $request){
 
    if ($request->isXmlHttpRequest()) {
 
        // Champs OBLIGATOIRE
        $champs1 = $request->query->get('champs1');
        $champs2 = $request->query->get('2');
 
    // Champs NON OBLIGATOIRE
    $champs3 = $request->query->get('champs3');
    $champs4 = $request->query->get('champs4');
 
        $em = $this->getDoctrine()->getManager();
        $listeGroupe = $em->getRepository('MainBundle:PqtDetails')->getListeGroupe($champs1,$champs2,$champs3,$champs4);
        ...
        }
        ...
}
Ma fonction présente dans mon 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
 
public function getListeGroupe($champs1,$champs2,$champs3,$champs4){
 
$results = $this->_em->createQuery('
    SELECT p.champs1, p.champs2
    FROM MainBundle:PqtDetails p
 
    WHERE p.champs1 = :champs1
    AND (p.champs2 >= :champs2
    AND p.champs3 <= :champs3)
    AND  p.champs4 is not null
')
    ->setParameters(array('champs1'=>$champs1, 'champs2'=>$champs2,'champs3'=>$champs3,'champs4'=>$champs4))
    ->getResult();
    return $results;
}
Je voudrais mettre une condition dans ma requête qui dit , si le champs3 et champs4 sont vide alors j’exécute ma requête seulement avec les champs1 et champs2 en paramètre, sinon ma requête s’exécute avec tous les champs en paramètre.

Merci d'avance pour votre aide