Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous !
J'effectue le contrôle d'un formulaire côté serveur à l'aide de validateurs. Problème : dans le cas où un champ du formulaire n'est pas valide, l'utilisateur retombe sur un formulaire vierge. Comment faire pour garder ces informations dans la page ?
Merci !
J-Zender.
Hors ligne
Utiliser le champ value="" des balises input en faisant un echo des variables.
Après tout dépend comment est ton code pour le "comment faire ?"
Tu dois passer tes variables à la vue du formulaire dans tous les cas
Hors ligne
Tu pourrais aussi utiliser un call Ajax pour faire ta validation. Si erreur, tes champs sont tous remplis.
Hors ligne
Peux-tu m'en dire un peu plus Zudre stp ? Ajax, je prévois de le découvrir dans une seconde partie de mon projet, si tu as des pistes ou des liens, ils sont les bienvenus
Hors ligne
Bonjour,
Je me suis penché sur la question et voilà ou j'en suis :
Outils utilisés :
- JQuery
- Zend_Json
Code HTML/Javascript/AJAX :
<script language="javascript" type="text/javascript"> $(document).ready(function() { $("#inscription").click(function() { var formData = $("#formulaire").serialize(); $.ajax({ type: "POST", url: "/inscription/check", data: formData, datatype: "json", processData:false, success: function(json){ errors = eval(json); showErrors(errors); } }); }); }); function showErrors(array) { if(array.length>0) { $("#divErrors").css("display","block"); $("#errors").empty(); $.each(array, function(i, val) { $("#errors").append("<li>"+val+"</li>"); }); } else { window.location.href=""; } } </script> <div id="divErrors" style="display:none;"> <strong>Erreur(s) : </strong> <ul id="errors"> </ul> </div> <form id="formulaire" method="post"> Email : <input type="text" name="user[email]" /><br /> Nom : <input type="text" name="user[nom]" /><br /> Prénom : <input type="text" name="user[prenom]" /><br /> <input type="button" id="inscription" value="Valider" /> </form>
Controller Inscription :
<?php class InscriptionController extends Zend_Controller_Action { public function checkAction() { $errors = array(); $data = $this->_request->getParam('user'); // Récupère le tableau de valeurs user[] ... ici tu filtres les données de $data ... if (count($errors)==0) { Zend_Loader::loadClass('User'); $user = new User(); $user->insert($data); } Zend_Loader::loadClass('Zend_Json'); $this->view->errors = Zend_Json::encode($errors); } }
Ma vue (inscription/check.phtml)
<?php echo $this->errors; ?>
Je ne suis peut-être parti dans une mauvaise voie... ,dans ce cas, je comptes sur vous pour m'en informer !
A+
Dernière modification par dug (31-10-2007 20:04:37)
Hors ligne
Il faut que dans ton controller tu repasse un objet à ta vue
$this->view->monObjet= $monObjet;
et ensuite tu fais cela dans ta vue
<div id="contactadd"> <table> <tr> <td><?php echo $this->formLabel('contact_nom', 'nom');?></td> <td><?php echo $this->formText('contact_nom', $this->$monContact->contact_nom, array('class' => 'contactinput')) ?></td> </tr> </table>
J'utilise les fonctions de zend pour génerer un champ texté.
cela revien a faire
<input type="test" name="contact_nom" value="<?php echo $this->$monContact->contact_nom?>" />
Bien evidement cela est un exemple avec un object contact. je n'utilise pas d'accesseur get pour accéder à mes proprietes d'objet si cela est ton cas le code sera comme ca
<input type="test" name="contact_nom" value="<?php echo $this->$monContact->getNom();?>" />
Bonne chance
Dernière modification par superloulou77 (02-11-2007 10:10:34)
Hors ligne
j'ai le meme probleme sur mon post:
http://www.z-f.fr/forum/viewtopic.php?id=493
moi j'utilise la façon du tutorial qui est ici pour le formulaire:
http://g-rossolini.developpez.com/tutor … odele#LV-I
mais je n'arrive pas a récupéré les données si elles sont erroné.
Quelqu'un pourrais me dire comment faire ? tout est dans le tuto ici:
http://g-rossolini.developpez.com/tutor … odele#LV-I
Merci
Hors ligne
Tu peux simplement utiliser la méthode populate :
$post = $this->_request->getPost(); $form->populate($post);
Dernière modification par Julien Breux (06-10-2008 09:51:54)
Hors ligne
Pages: 1