Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour tous le monde,
Comme j'avances timidement sur zend je souhaiterais savoir comment afficher les données d'un user si il clique sur modifier son profil et qu'il se connecte sur son interface. Mon bout de code est comme suit :
Formulaire editUser.php :
class Application_Form_EditUser extends Zend_Form { public function init() { $this->setName('/user/edit'); $this->setAction(); $nom = new Application_Form_EText( 'nom', 'Nom : ' ); $nom->addValidator('StringLength', false, array(6, 20)); $prenom = new Application_Form_EText( 'prenom', 'Prenom : ' ); $adresse = new Application_Form_EText( 'adresse', 'Adresse : ' ); $codePostale = new Application_Form_EText( 'codePostale', 'Code Postale : ' ); //$codePostale->addValidator(new Zend_Validate_Regex('#[0-9]{2} ?[0-9]{3}#')); $ville = new Application_Form_EText( 'ville', 'Ville : ' ); $telMobile = new Application_Form_EText( 'telMobile', 'Numero de telephone mobile : ' ); //$telMobile->setRequired(false)->addValidator('Digits')->addValidator(new Zend_Validate_StringLength(8)); $telFixe = new Application_Form_EText( 'telFixe', 'Numero de telephone fixe : ' ); //$telFixe->setRequired(false)->addValidator('Digits')->addValidator(new Zend_Validate_StringLength(8)); $submit = new Zend_Form_Element_Submit ( 'submit' ); $submit->setAttrib ( 'class', 'submitbutton' )->setLabel ( 'Update' )->setAttrib('class', 'submit'); $elements = array($nom, $prenom, $adresse, $codePostale, $ville, $telMobile, $telFixe, $submit); $this->addElements( $elements ); } }
Le controlleur UserController.php
class UserController extends Zend_Controller_Action { $id = Zend_Auth::getInstance()->getIdentity()->id; $nom = Zend_Auth::getInstance()->getIdentity()->nom; $prenom = Zend_Auth::getInstance()->getIdentity()->prenom; $editform = new Application_Form_EditUser(); echo "id :".$id." nom ".$nom." prenom : ".$prenom; }
Jusqu'ici je peux afficher les données (id, nom, prenom)
model user.php
class Application_Model_DbTable_Users extends Zend_Db_Table_Abstract { protected $_name = 'user'; }
Une question bête mais comment puis-je afficher ses données dans les input?
Merci de m'aider.
Hors ligne
Il faut que tu apprennes à lire davantage la documentation Bouchra ! Toutes les questions que tu poses depuis quelques jours, les réponses sont chaque fois dans la doc' ! Prend le temps de les lire en entier avant de t'attaquer à ton code...
En l'occurrence, la réponse est ici : http://zendframework.com/manual/1.11/en … forms.html
Tu as la possibilité de définir des valeurs par défaut pour les champs via la fonction setDefault (qui s'utilise ainsi : $form->setDefault('email', 'test@test.com')), via la fonction setDefaults (à laquelle tu passes un tableau associatif) ou la fonction populate qui fonctionne également de la même manière que setDefaults.
Hors ligne
Bonjour tous le monde,
Pour bakura, j'ai bien pris mon temps pour me documenter mais malheureusement sans succès c'est pour cela je postule mes problemes dans les forums, et je le redis je suis en autoformation du zend en plus c'est la première que j'essais de mettre en application tous ce qui est orientée objet donc mon niveau au dessous de débutante.
Merci pour ton humble aide bakura et à tous ceux qui donnent un cou de main pour débloquer d'autres.
J'obtiens toujour un jolie erreur, ce que j'ai mis comme code et comme suis :
Dans le model user.php
class Application_Model_DbTable_Users extends Zend_Db_Table_Abstract { protected $_name = 'user'; public function getUser($id) { $id = (int)$id; $row = $this->fetchRow( 'id = '. $id); //recupération de toutes les informations de la table user if (!$row) { throw new Exception ("Could not find row $id"); } return $row->toArray(); } }
UserController.php
public function editAction() { $id = Zend_Auth::getInstance()->getIdentity()->id; $editform = new Application_Form_EditUser(); echo "id :".$id." nom ".$nom." prenom : ".$prenom; $this->view->editform = $editform ; $id = $this->_getParam('id', 0); $us = new Application_Model_DbTable_Users(); $profil = $us->getUser($id); $editform->populate($profile->getUser($id)); }
Normalement c'est a ce niveau ou je le probleme
$profil = $us->getUser($id);
$editform->populate($profile->getUser($id));
Merci de me débloquer.
Dernière modification par Bouchra (05-04-2012 22:16:48)
Hors ligne
J'ai refais mon contrôleur, j'ai constaté que j'envoi un joli 0 dans Id. normalement je dois mettre $id = Zend_Auth::getInstance() apres l'affichage du formulaire.
public function editAction() { $editform = new Application_Form_EditUser(); $this->view->editform = $editform ; $id = $this->_getParam('id', 0); //on récupère l'id user par le champ hidden $id = Zend_Auth::getInstance()->getIdentity()->id; echo "id : ".$id; $info_user = new Application_Model_DbTable_Users(); $profil = $info_user->getUser($id); Zend_Debug::dump($profil); $editform->populate($profile->getUser($id)); }
Résultat obtenu c'est que tous mes données son affiché dans array hors je souhaiterais les mettre chaque champs dans un input.
Hors ligne
Je pense il y a quelque chose qui m'echappe.
public function editAction() { $editform = new Application_Form_EditUser(); $this->view->editform = $editform ; $id = Zend_Auth::getInstance()->getIdentity()->id; $info_user = new Application_Model_DbTable_Users(); $profil = $info_user->getUser($id); Zend_Debug::dump($profil); $data[] = array(); $data['id'] = $profil->getId(); $data['nom'] = $profil->getNom(); $data['prenom'] = $profil->getPrenom(); $editform->populate($data); }
Je vois Array rempli par les données mais sans view.
Dernière modification par Bouchra (05-04-2012 23:45:26)
Hors ligne
Je ne sais pas si c'est la raison mais la ligne suivante n'est pas correcte :
[lang=php] $data[] = array();
Tu est entrain de dire que la première ligne de ton tableau $data est un tableau, or ce que tu dois dire c'est que $data est un tableau donc tu devrais avoir juste :
[lang=php] $data = array();
Hors ligne
Même avec cela
$data = array();
ne marche pas
Hors ligne
Enfin j'ai résolu mon probleme. C'est tres simple mais c'est pas évident pour une débutante. Voila le code. Je le publie pour ceux qui ont rencontré même probleme que le mien :
$editform = new Application_Form_EditUser();
$this->view->editform = $editform ;
$id = Zend_Auth::getInstance()->getIdentity()->id;
$info_user = new Application_Model_DbTable_Users();
//$profil = $info_user->getUser($id);
$editform->populate($info_user->getUser($id))
Merci pour l'equipe.
Hors ligne
Bonsoir Bouchra,
je vois que vous aviez les mêmes confusions comme moi en tant que débutante, maintenant je pense que vous vous êtes mieux familiariser avec Zend, Veuillez m'envoyer le code que vous avez utilisé..moi je veux afficher les données de l'utilisateur connecté
Merci d'avance.
Hors ligne