Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-03-2008 03:12:45

jprl12
Nouveau membre
Lieu: Montréal, Qc.
Date d'inscription: 11-03-2008
Messages: 6
Site web

[Résolu][Zend_Form] Avec Prototype pour AJAX

Bonsoir,

Je voudrais effectuer certaines vérifications dans ma base de donnée pour savoir si par exemple, une adresse email est déjà utilisée en utilisant Prototype pour les fonctions Javascripts ... Par contre, je voudrais garder les validations classiques que je demande à Zend_Form.

Tout d'abord, voici mon code pour générer mon formulaire :

Code:

    public function editAction()
    {        
        $form = new Zend_Form;
        $form->setName( 'usersEdit' );

        $email = new Zend_Form_Element_Text('email');
        $email->setLabel( 'Email :' );
        $email->addValidator( 'NotEmpty', true );
        $email->addValidator('EmailAddress');
        $email->setRequired( true );
        $email->setAttribs(array('onkeyup'=>'sendRequest()'));
        
        $form->addElements(array($email));
        
        $form->setDecorators( array( 'FormElements', 'Form' ) );
        $form->setElementDecorators(array('ViewHelper','Label','Errors',array('HtmlTag', array('tag' => 'div'))));

        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setValue('Envoyer');
        $submit->setDecorators(array(array('ViewHelper'),array('Label'),array('HtmlTag', array('tag' => 'div', 'class' => 'submit'))));
        
        $form->addElements(array($submit));
        
        if ( $this->_request->isPost() )
        {
            $formData = $this->_request->getPost();
            
            if ( $form->isValid( $formData ) )
            {
                echo 'Success';
            }
            else
            {
                $this->view->form  = $form->populate( $formData );
            }

            if ( isset($_POST['email']) )
            {
                echo 'On écrit quelque chose dans le champs email ...';
            }

        }
        else
        {
            $this->view->form = $form->render();
        }
    }

Mon code de mon template edit.phtml :

Code:

<script src="<?= APPLICATION_URL ?>/js/prototype.js" language="JavaScript" type="text/javascript"></script>
<script>

    function sendRequest()
    {
        new Ajax.Request("<?= APPLICATION_URL ?>/users/edit", 
        { 
            method: 'post', 
            postBody: 'email='+ $F('email'),
            onComplete: showResponse 
        }
        );
    }

    function showResponse(req)
    {
        $('show').innerHTML= req.responseText;
    }
</script>
<div id="show"></div>
<br />
<?= $this->form; ?>

Donc, il y a un "onkeyup=sendRequest()" sur mon champs "email" pour appeler la fonction sendRequest() qui effectuer des traitements AJAX ... Et lorsque le tout est terminé, elle appelle showResponse() pour afficher quelque chose dans le DIV (id="show") ... Mais, à chaque fois, j'ai mon formulaire de base avec les messages d'erreur affichés, mon texte "On écrit quelque chose dans le champs email ..." et mon formulaire de base qui sont affichés sur la même page!! Normalement, c'est la valeur mis en "echo" dans le code PHP qui est retourné au Javascript ... mais, on dirait que "$this->view->form  = $form->populate( $formData );" est géré comme si j'avais fait un "echo" ... Pourtant, je mets mon $form->render(); ou $form->populate(); dans une variable $form->view->form, je ne fais pas un echo de celui-ci ...

Merci d'avance pour votre aide!

Dernière modification par jprl12 (12-03-2008 16:36:48)


Jean-Philippe
iesto.com | jprl12.com

Hors ligne

 

#2 12-03-2008 09:05:47

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu][Zend_Form] Avec Prototype pour AJAX

Il y'a un méthode qui permet de savoir si un requête est fait en ajax

Code:

//dans un controller
if ($this->_request->isXmlHttpRequest()) {
  //.. ici requete ajax (marche avec prototype et jquery)
} else {
    //.. traitement normal
}

Hors ligne

 

#3 12-03-2008 16:36:20

jprl12
Nouveau membre
Lieu: Montréal, Qc.
Date d'inscription: 11-03-2008
Messages: 6
Site web

Re: [Résolu][Zend_Form] Avec Prototype pour AJAX

Merci beaucoup! Maintenant, je vais aller me renseigner sur JSON ...


Jean-Philippe
iesto.com | jprl12.com

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages