Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-03-2012 16:45:03

Bouchra
Membre
Lieu: Montréal
Date d'inscription: 07-12-2011
Messages: 47

Mettre à jour le profil

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 :

Code:

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

Code:

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

Code:

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?    roll

Merci de m'aider.

Hors ligne

 

#2 31-03-2012 22:19:28

bakura
Administrateur
Date d'inscription: 30-01-2010
Messages: 353

Re: Mettre à jour le profil

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

 

#3 05-04-2012 20:43:04

Bouchra
Membre
Lieu: Montréal
Date d'inscription: 07-12-2011
Messages: 47

Re: Mettre à jour le profil

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

Code:

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

Code:

    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

 

#4 05-04-2012 22:51:01

Bouchra
Membre
Lieu: Montréal
Date d'inscription: 07-12-2011
Messages: 47

Re: Mettre à jour le profil

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.

Code:

 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

 

#5 05-04-2012 23:20:00

Bouchra
Membre
Lieu: Montréal
Date d'inscription: 07-12-2011
Messages: 47

Re: Mettre à jour le profil

Je pense il y a quelque chose qui m'echappe.

Code:

   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

 

#6 06-04-2012 09:05:15

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Mettre à jour le profil

Je ne sais pas si c'est la raison mais la ligne suivante n'est pas correcte :

Code:

[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 :

Code:

[lang=php]
$data = array();

Hors ligne

 

#7 06-04-2012 16:26:26

Bouchra
Membre
Lieu: Montréal
Date d'inscription: 07-12-2011
Messages: 47

Re: Mettre à jour le profil

Même avec cela

Code:

$data = array();

ne marche pas

Hors ligne

 

#8 07-04-2012 02:00:16

Bouchra
Membre
Lieu: Montréal
Date d'inscription: 07-12-2011
Messages: 47

Re: Mettre à jour le profil

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

 

#9 22-07-2012 19:25:28

new zendy
Nouveau membre
Date d'inscription: 22-07-2012
Messages: 1

Re: Mettre à jour le profil

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages