Bonjour a tous,
Voila j'ai voulu faire évoluer mon site afin qui soit plus rapide dans ses temps de chargement en y incluant de l'ajax via jquery. Pour le chargement des pages sa ne pose aucun problème.
Mais maintenant je veut faire en sorte que lorsque je fais une modification dans mes formulaires et que je click sur envoyer sa me recharge que l’endroit ou il y avait le formulaire et que bien sur sa modifie en base de données avec les éléments que j'ai mis dans mon formulaire.
C'est la que sa pose problème. C'est que sans ajax tout fonctionne bien il y a pas de souci mes action de mise a jour fonctionne nickel ! Mais maintenant que j’intègre de l'ajax mon test de mon formulaire ne passe plus et du coup me renvoie mon formulaire comme si il y a avait une erreurs !
J'ai bien compris que en ajax pour les formulaires il faut faire une sérialisation que l'on mais dans notre script jquery. Cela fonctionne et grâce a un Zend_Debug j'ai pu vérifier qu'il me récupérer bien mon $_POST. Mais du coup je perd tout les controlles des validateur et filtre que j'ai paramétrer dans mon formulaire. La question est comment je fais pour que tout fonctionne comme avant mais avec l'ajax en + ?
Le controller :
Ma vue: updatemember.phtml
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 updatememberAction() //action ou ce trouve mon formulaire { $this->_helper->layout->disableLayout(); //supprime le layout //... Fait mon appel a la base de données repeuple mon formulaire et l'envoie dans la vue => OK } public function updatedAction() //action qui mais a jour mon formulaire dans la BDD { $Form_Admin_User = $this->_getRegistrationForm(); if($Form_Admin_User->isValid($_POST)) { //J'envoie dans la BDD les infos de mon formulaire } else { // je revient sur mon formulaire et affiche les erreurs. } } private function _getRegistrationForm() //methode privee qui parametre mon formulaire (action, decorateur ...) { $Form_Admin_User = new Form_Admin_User; $Form_Admin_User->setDecorators(array(array('ViewScript', array('viewScript' => $this->_helper->viewRenderer->getViewScript('userFormDecorator'))))); return $Form_Admin_User->setAction($this->_helper->url->url(array('controller' => 'admin', 'action' => 'updaded', 'accountId' => $this->_getParam('accountId')), 'route_locale', true)); }
Merci a tous d'avance pour l'aide
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
29
30
31
32
33
34
35
36
37
38
39
40 <div class="encadre"> <div class="clearfix"> <div class="floatLeftForm2"> <div id="Form_Member_Update_<?php echo $this->param; ?>"><?php echo $this->Form_Member_Update;?></div>// Mon formulaire est ICI !!!!! </div> <div class="floatLeftForm2" style="margin-left: 5%;"> <?php echo $this->licence; ?> <br /> <?php echo $this->password; ?> <br /> <?php if($this->infoMembre['picture'] != 'Aucune'): ?> <img src="/picture/controllers/account/avatar/<?php echo $this->infoMembre['picture'] ?>" style="width: 300px;margin: 5%"/> <?php endif ?> <?php if($this->infoMembre['picture'] === 'Aucune'): ?> <img src="/picture/controllers/account/avatar/noavatar.png" style="width: 300px; margin: 5%"/> <?php endif ?> </div> </div> </div> <script type="text/javascript"> //Ma config ajax $J(document).ready(function(){ $J("form.Zend_Form").click(function() { $J("#Form_Member_Update_<?php echo $this->param; ?>").empty().html('<img style="margin: 0 auto;" src="/picture/layout/ajax-loader2.gif" /><br />En cours de mise à jour'); var datas = $J(this).serialize(); //recuperation des elements de mon formulaire. $J.ajax({ type:"POST", url:$J(this).attr("action"), data: datas, success: function(retour){ $J("#Form_Member_Update_<?php echo $this->param; ?>").empty().append(retour); alert("Mise à jour effectué avec succés"); } }); return false; }); }); </script>![]()
Partager