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