IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Traitement formulaire Zend avec Ajax


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Homme Profil pro
    Technical Lead Salesforce
    Inscrit en
    Février 2009
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technical Lead Salesforce

    Informations forums :
    Inscription : Février 2009
    Messages : 563
    Par défaut Traitement formulaire Zend avec Ajax
    Bonjour, j'ai créé un formulaire avec Zend et je souhaite le traiter avec l'aide de l'Ajax, pour ce faire, j'ai ajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->setAttrib('onSubmit', 'return maFonction();');
    A mon formulaire où je fais un alert() dans la fonction qui est appelée lors de l'appuie sur le submit mais après ma page charge automatiquement celle de l'index sans que je puisse faire un traitement, comment puis-je faire en sorte de pouvoir faire mon traitement?

    Voici la fonction javascript appelée, je l'ai testé avec un alert() au moment de l'appel, elle fonctionne:
    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
    $.ajax(
    	{
    	   url: 'index/traitement-form',
    	   type: 'GET',
    	   context: document.corps,
    	   data: 
    	   {
    		"format" : "html",
    		"nom" : document.getElementById('nom'),
    		"mail" : document.getElementById('mail'),
    		"objet" : document.getElementById('objet'),
    		"message" : document.getElementById('message')
    	   },
    	   error: errorAjax,
    	   dataType: "html",
    	   success: function(data)
    	   {
    			alert('traitement fait!');
    	   }
    	});
    Voici mon controlleur (par ailleurs, que puis-je mettre dans mon if pour vérifier si mon formulaire est valide?):
    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
    $nom = $this->_getParam('nom');
        	$mail = $this->_getParam('mail');
        	$objet = $this->_getParam('objet');
        	$message = $this->_getParam('message');
     
        	$form = new ContactForm();
        	$form->getElement('nom')->setValue($nom);
        	$form->getElement('mail')->setValue($mail);
        	$form->getElement('objet')->setValue($objet);
        	$form->getElement('message')->setValue($message);
     
        	// s'il n'est pas valide
        	if()
        	{
        		$this->view->traitement = true;
        		$this->view->form = $form->populate($formData);
        	}else 
        	{
        		$this->view->traitement = false;
        	}
    Ma vue:
    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
    <?php 
    if($this->traitement)
    {
    	echo "<script type='text/javascript'>alert('Requ\352te correctement ex\351cut\351e.');</script>";
    }else 
    {
    	echo "<fieldset class='contact'>
    		<legend>Contact</legend>
    		Vous avez une question, une suggestion ou autre chose &agrave; me soummettre?<br/><br/>
    		Dans ce cas, compl&eacute;tez ce formulaire ou <br/>
    		contactez-moi directement &agrave; mon adresse mail: <a href='mailto:aurelien.laval@gmail.com' class='adresseMail'>aurelien.laval@gmail.com</a>" 
    		. $this->form . "
    		<span class='champs_required'>Les champs comportants un * sont obligatoires.</span>
    	  </fieldset>";
    }
    ?>
    Merci de votre aide.
    - Mes articles
    - Consultant technique Salesforce
    - Salesforce Certified Administrator
    - Salesforce Certified Platform App Builder
    - Salesforce Certified Developper I
    - Salesforce Certified Sales Cloud
    - Salesforce Certified Service Cloud

  2. #2
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Il te faut :
    dans ta fonction ce qui évitera de poursuivre.

    Pas besoin de faire return quand tu déclare onsubmit, le nom de ta fonction suffit

  3. #3
    Rédacteur

    Homme Profil pro
    Technical Lead Salesforce
    Inscrit en
    Février 2009
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technical Lead Salesforce

    Informations forums :
    Inscription : Février 2009
    Messages : 563
    Par défaut
    Comme cela?
    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
     
    $.ajax(
    	{
    	   url: 'index/traitement-form',
    	   type: 'GET',
    	   context: document.corps,
    	   data: 
    	   {
    		"format" : "html",
    		"nom" : document.getElementById('nom'),
    		"mail" : document.getElementById('mail'),
    		"objet" : document.getElementById('objet'),
    		"message" : document.getElementById('message')
    	   },
    	   error: errorAjax,
    	   dataType: "html",
    	   success: function(data)
    	   {
    			alert('traitement fait!');
    	   }
    	});
    	return false;
    Et dans mon controlleur, dans mon if'), qu'est-ce que je peux lui mettre comme condition pour vérifier qu'il est valide svp?
    - Mes articles
    - Consultant technique Salesforce
    - Salesforce Certified Administrator
    - Salesforce Certified Platform App Builder
    - Salesforce Certified Developper I
    - Salesforce Certified Sales Cloud
    - Salesforce Certified Service Cloud

  4. #4
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Ça c est a toi de voir en fonction de ce que tu veux faire

  5. #5
    Rédacteur

    Homme Profil pro
    Technical Lead Salesforce
    Inscrit en
    Février 2009
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technical Lead Salesforce

    Informations forums :
    Inscription : Février 2009
    Messages : 563
    Par défaut
    Quand j'appuie, ca continue de me rediriger vers la page index automatiquement alors que j'ai bien mis "return false;" à ma fonction javascript, comment ça se fait?

    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
    21
    22
    23
    24
    25
     
    function traitementFormulaireContact()
    {
    	$.ajax(
    	{
    	   url: 'index/traitement-form',
    	   type: 'POST',
    	   context: document.corps,
    	   data: 
    	   {
    		"format" : "html",
    		"nom" : document.getElementById('nom'),
    		"mail" : document.getElementById('mail'),
    		"objet" : document.getElementById('objet'),
    		"message" : document.getElementById('message')
    	   },
    	   error: errorAjax,
    	   dataType: "html",
    	   success: function(data)
    	   {
    			alert('traitement fait!');
    	   }
    	});
    	return false;
    }
    controlleur
    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
     
    public function traitementFormAction()
        {
     
        	$this->_helper->layout->disableLayout();
        	$formData = $this->getRequest()->getPost();
        	// s'il n'est pas valide
        	if(!$form->isValid($formData))
        	{
        		$nom = $this->_getParam('nom');
        		$mail = $this->_getParam('mail');
        		$objet = $this->_getParam('objet');
        		$message = $this->_getParam('message');
     
        		$form = new ContactForm();
        		$form->getElement('nom')->setValue($nom);
        		$form->getElement('mail')->setValue($mail);
        		$form->getElement('objet')->setValue($objet);
        		$form->getElement('message')->setValue($message);
     
        		$this->view->traitement = true;
        		$this->view->form = $form->populate($formData);
        	}else 
        	{
        		$this->view->traitement = false;
        	}
        }
    - Mes articles
    - Consultant technique Salesforce
    - Salesforce Certified Administrator
    - Salesforce Certified Platform App Builder
    - Salesforce Certified Developper I
    - Salesforce Certified Sales Cloud
    - Salesforce Certified Service Cloud

Discussions similaires

  1. [ZF 1.11] Valider formulaire Zend avec Ajax
    Par absot dans le forum Zend Framework
    Réponses: 6
    Dernier message: 22/11/2011, 12h22
  2. [1.x] formulaire dynamique avec ajax
    Par belgacem.tlili dans le forum Symfony
    Réponses: 1
    Dernier message: 29/03/2010, 22h05
  3. [AJAX] AJAX et envoie de données d'un formulaire
    Par gunderam dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/06/2006, 18h17
  4. [AJAX] Formulaire prépopuler avec du ajax dans la page
    Par shwin dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/10/2005, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo