Bonsoir!

J'ai un léger soucis avec Ajax et mon formulaire et je n'arrive pas à passer l'étape de la validation du formulaire.
Mon formulaire contient une liste de type select et un bouton rechercher.
Ma liste contient des dates. Une fois la date choisie, en cliquant sur "rechercher", j'aimerais pouvoir exécuter une action sans recharger la page, tout en récupérant l'élément sélectionné dans la liste.

Voici mon formulaire
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
class Astreinte_Form_DateSelection extends Zend_Form
{
    public function init()
    {
    	$dateSelect = array();
 
	// Création de l'instance "astreinte"
        $astreintes = new Astreinte_Model_DbTable_Astreintes();
 
        // Récupération des astreintes pour la page d'accueil
        $rowAstreintes = $astreintes->getAccueilAstreinte();
 
        foreach ($rowAstreintes as $astreinte):
        	$dateSelect[$astreinte->date_debut] = "du " . $astreinte->date_debut . " au " . $astreinte->date_fin;
        endforeach;
 
        $this->setMethod('post');
       	$this->setAction(__URL__ . Zend_Controller_Front::getInstance()->getBaseUrl() . '/astreinte/index/validation');
 
	$dateRange = new Zend_Form_Element_Select('dateDebut');
        $dateRange->setLabel('Sélectionnez une ou plusieurs dates et lancez la recherche:')
           	  ->addMultiOptions($dateSelect);
 
        $this->addElement($dateRange)
             ->addElement('submit', 'submitTo', array('label' => 'Rechercher'));           						
    }
}
L'initialisation de mon controller s'effectue comme ceci :
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
public function init()
{
        /* Initialize action controller here */
    	parent::init();
    	$models = $this->_request->getParam('module').'/models';
    	set_include_path('../application/modules/'.$models . PATH_SEPARATOR . get_include_path());
 
    	// ajax
    	$ajaxContext = $this->_helper->getHelper('AjaxContext');
    	$ajaxContext->addActionContext('modifier', 'html')
	            ->addActionContext('validation', array('html', 'json'))
	            ->initContext();
 
	//si requete ajax on désactive les layouts
        if($this->_request->isXmlHttpRequest()){
            $this->_helper->layout->disableLayout();    //disable layout for ajax
        }
}
Dans mon controller, l'action "modifier" permet d'afficher le formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
public function modifierAction()
{
	$form = new Astreinte_Form_DateSelection();
    	$this->view->formDatesAstreinte = $form;
}
et la vue associée contenant le code Ajax
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
<?php echo $this->formDatesAstreinte; ?>
<div id="contenu"></div>
 
<script type="text/javascript">
	//for send data i'll use jquery library
	$(document).ready(
		function(){
			$("#submitTo").click(function() {
				alert('Coucou');
				var option = $('#dateDebut option:selected').val();
				if (option != '') {
					$.ajax({
						url:"<?php echo __URL__ . $this->baseUrl();?>/astreinte/index/validation",
						data:{'dateDebut' : option},
						type: "POST",
						dataType: "json",
						success: function(result){
							alert(option);
							alert(result);
							//$("#contenu").html(result['dateDebut']);         
						}
					});
					return false;
				}
			});
		}
	);
</script>
L'action "validation" est appelée lorsqu'on clique sur le bouton "rechercher" du formulaire
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
public function validationAction()
{
    	$form = new Astreinte_Form_DateSelection();
 
   	//Vérifie qu'on envoie les infos par POST
        if ($this->_request->isPost()) {
		if( $form->isValid($_POST))  {
	    		if (($data = $form->processAjax($_POST))) {
	                	$this->view->succes = "SUCCES";
	                	// On désactive le layout
	                	$this->_helper->layout->disableLayout();
	                	$this->_helper->json->sendJson($data);
	            	} else {
	                	$this->view->succes = "ECHEC";
	                	$this->_helper->json->sendJson($data);
	            	}
	    	} else{
	    		$this->view->succes = "DEBUT";
	    	}
        }else {
        	$this->view->succes = "DEBUT";
        }
 
    	$this->view->formDatesAstreinte = $form;
}
Sa vue est toute simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<?php echo "SUCCES = " . $this->succes; ?>
Donc une fois que j'appelle l'action "modifier", j'ai bien mon formulaire. Lorsque je choisis une date et que je clique sur le bouton "rechercher", j'exécute bien le code javascript (je le vois grâce à la fonction alert) mais je n'arrive pas à valider mon formulaire du côté de l'action "validation". Comme si le test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 if ($this->_request->isPost()) {
était toujours faut.
Qu'est-ce que j'aurais loupé qui ferait que mon formulaire n'est jamais validé et que je n'arrive pas à récupérer les éléments postés depuis mon formulaire ?
Merci pour votre aide