Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
voila j'ai un soucis, dans un formulaire.
Je recup les données de cette façon dans le formulaire:
<?php echo $this->escape(trim($this->membre->login));?>
et dans le controleur pour le view je fais sa :
$this->view->membre = $membre->fetchRow('id_membre='.$id);
donc ça marche bien, maintenant le probleme c'est que pour le ajouter je verifie les données du formulaire dans le controller mais le probleme c'est que si une donnée n'est pas bonne sa ne réécris pas se que l'utilisateur a tapé (plutot genant)
donc j'ai essayé sa :
$this->view->membre = $data;
sachan que data est un tableau
$data = array(
'login' => $login,
'password' => $password,
'email' => $email,
'dateins' => date("Y-m-d"),
'age' => $age,
'ville' => $ville,
'job' => $job,
'sexe' => $sexe,
'desc' => $desc,
'photo' => $photo,
);
voila, et sa marche pas comment faire ?
Merci
Hors ligne
La vue ne dois jamais accéder au données c'est au controller de le faire
quant au données c'est $this->_request qui les détient
A+JYT
Hors ligne
sekaijin a écrit:
La vue ne dois jamais accéder au données c'est au controller de le faire
quant au données c'est $this->_request qui les détient
A+JYT
en fait voici mon controler ajouter:
function ajouterAction() { $this->view->title = "Over-Book : S'inscrire"; $membre = new Membre(); if ($this->_request->isPost()) { Zend_Loader::loadClass('Zend_Filter_StripTags'); $filter = new Zend_Filter_StripTags(); $login = trim($filter->filter($this->_request->getPost('login'))); $password = trim($filter->filter($this->_request->getPost('password'))); $password2 = trim($filter->filter($this->_request->getPost('password2'))); $email = trim($filter->filter($this->_request->getPost('email'))); $age = trim($filter->filter($this->_request->getPost('age'))); $ville = trim($filter->filter($this->_request->getPost('ville'))); $job = trim($filter->filter($this->_request->getPost('job'))); $sexe = trim($filter->filter($this->_request->getPost('sexe'))); $desc = trim($filter->filter($this->_request->getPost('desc'))); $photo=""; require_once 'Zend/Validate/EmailAddress.php'; $validemail = new Zend_Validate_EmailAddress(); require_once 'Zend/Validate/Date.php'; $validedate = new Zend_Validate_Date(); require_once 'Zend/Validate/Alnum.php'; $valideAnum = new Zend_Validate_Alnum(); require_once 'Zend/Validate/NotEmpty.php'; $valideNotEmpty = new Zend_Validate_NotEmpty(); require_once 'Zend/Validate/Int.php'; $valideInt = new Zend_Validate_Int(); $error=0; if (!$valideAnum->isValid($login)) { $this->view->buglogin="Doit contenir seulement des caractères alphabétiques et numériques."; $error+=1; } if (!$valideAnum->isValid($password)) { $this->view->bugpwd="Doit contenir seulement des caractères alphabétiques et numériques."; $error+=1; } if ($password!=$password2 || !$valideAnum->isValid($password2)) { $this->view->bugpwd2="Vous avez fait une erreur dans votre Mot de Passe."; $error+=1; } if (!$validemail->isValid($email)) { $this->view->bugemail="Votre E-Mail est invalide."; $error+=1; } if (!$validedate->isValid($age)) { $this->view->bugage="Votre Date de naissance n'est pas correcte."; $error+=1; } if (!$valideNotEmpty->isValid($ville)) { $this->view->bugville="Vous devez selectionner une ville."; $error+=1; } if (!$valideAnum->isValid($job)) { $this->view->bugjob="Doit contenir seulement des caractères alphabétiques et numériques."; $error+=1; } if (!$valideNotEmpty->isValid($sexe)) { $this->view->bugsexe="Vous devez selectionner votre sexe."; $error+=1; } if (!$valideNotEmpty->isValid($desc)) { $this->view->bugdesc="Vous devez ecrire une petite description sur vous."; $error+=1; } $errorphoto=0; if($_FILES["photo"]["error"] > 0 ) { $this->view->bugphoto="Vous devez specifier une photo de vous."; $error+=1; } else { include "./application/fonction.php"; if(!image_valid($_FILES['photo']['type'])) { $this->view->bugphoto="Le format de votre image doit etre de type : jpg,jpeg,gif,png.\n"; $errorphoto+=1; } if(($_FILES['photo']['size'] / 1024) > 300) { $this->view->bugphoto="La taille de votre image doit etre inferieur à 300 Kb."; $errorphoto+=1; } if($errorphoto<1){ $picture_temp = $_FILES['photo']['tmp_name']; $photo = $login."-".$_FILES['photo']['name']; move_uploaded_file($picture_temp,$_SERVER['DOCUMENT_ROOT'].$this->_request->getBaseUrl()."/public/upload/membre/".$photo); } } $data = array( 'login' => $login, 'password' => $password, 'email' => $email, 'dateins' => date("Y-m-d"), 'age' => $age, 'ville' => $ville, 'job' => $job, 'sexe' => $sexe, 'desc' => $desc, 'photo' => $photo, 'statut' => 'membre', ); if ($error<1) { $membre->insert($data); $this->_redirect('/membre'); return; } } $this->view->membre = $membre->createRow();; // additional view fields required by form $this->view->action = 'ajouter'; $this->view->buttonText = 'Ajouter'; }
et pourquoi quand l'utilisateur fait une erreur, sa ne recharge pas les champs dans le formulaire ?
Merci
Hors ligne
une p'tit aide svp, j'ai fai tou mes formulaires comme sa, j'aimerais bien que ça marche et j'trouve pa la solution
Hors ligne
je pensais pouvoir resoudre mon probleme avec sa :
$this->view->evenement = $event->createRow($data);;
mais sa marche pas :s et dans $data c'est bien un tableau avec les champs de la table . . .
que faire ? svp ?
Hors ligne
Isole mieux ton problème et essaye sur un exemple simple. La le code est trop long pour qu'on ait le temps de se plonger dedans.
A+, Philippe
Hors ligne
Oki Pilipe
voici mon probleme en plus petit:
le controlleur:
function ajouterAction() { $membre = new Membre(); if ($this->_request->isPost()) { Zend_Loader::loadClass('Zend_Filter_StripTags'); $filter = new Zend_Filter_StripTags(); $login = trim($filter->filter($this->_request->getPost('login'))); $email = trim($filter->filter($this->_request->getPost('email'))); $data = array( 'login' => $login, 'email' => $email, ); if ($error<1) { //insertion si donné valide (verification das le code complet $membre->insert($data); $this->_redirect('/membre'); return; } // et là j'aimerais renvoyé les données a la page si $error >2 cad si les champs sont invalide. // mais je sais pas comment faire et avec $this->view->membre= $membre->createRow($data);; //sa marche pas, pourtant ça ma l'air d'etre se que je veux faire. . . } $this->view->membre = $membre->createRow();; }
et je veux les recup dans mon formualaire qui sert egalement de modele au modifier et supprimer et qui accede au donnée avec :
<?php echo $this->escape(trim($this->membre->login));?>
Hors ligne
Bonjour,
Il y a un problème d'approche : tu crées ton objet $membre avant de savoir si il a une quelconque raison d'être (si les valeurs saisies sont fausses, tu n'as pas à créer l'objet $member).
Il faut commencer par récupérer les données en POST, vérifier si elles sont valides ou pas.
Ensuite 2 cas :
- si tout est valide, tu crées le membre : $membre = new Membre() et $membre->insert...
- si il y a une ou plusieurs données invalides, tu renvoies à la vue les données qui avaient été postées (tu peux renvoyer directement des valeurs récupérées dans le $_POST). Mais ici tu ne peux pas renvoyer les données de $member, il n'est pas encore créé (et il n'y a aucune logique à le créer).
A+, Philippe
Hors ligne
ah bah faudra p'tet changé le tuto sur
http://g-rossolini.developpez.com/tutor … odele#LV-I
^^
Hors ligne