Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 06-08-2009 04:26:19

oswalidos
Membre
Date d'inscription: 12-07-2009
Messages: 39

[résolu][ZF 1.8]modification d'un enregistrement

salut ,
je suis ce tutorial,tout va bien mais j'ai du mal a comprendre quelque chose :

un formulaire avec un champ caché

Code:

$id = new Zend_Form_Element_Hidden('id');

l'action modifier :

Code:

function editAction()
{
    $this->view->title = "Edit album";
    $this->view->headTitle($this->view->title, 'PREPEND');
    $form = new Form_Album();
    $form->submit->setLabel('Save');
    $this->view->form = $form;
    if ($this->getRequest()->isPost()) {
      $formData = $this->getRequest()->getPost();
      if ($form->isValid($formData)) { 
         $id = (int)$form->getValue('id'); //quand/où le set du champ id est faite ?
         $artist = $form->getValue('artist');
         $title = $form->getValue('title'); 
         $albums = new Model_DbTable_Albums();
         $albums->updateAlbum($id, $artist, $title);
         $this->_redirect('/');
         } else {
           $form->populate($formData);
           }
    }else {
    $id = $this->_getParam('id', 0); //cet id est un parametre passé par l'url de modifier 
                                                  //je pense que cet 'id' n'a rien a voir avec l'id du champ caché
    if ($id > 0) {
    $albums = new Model_DbTable_Albums();
    $form->populate($albums->getAlbum($id));
    }
}
}

comment/où le champ caché 'id' est affecté ?

Dernière modification par oswalidos (06-08-2009 23:07:07)

Hors ligne

 

#2 06-08-2009 08:38:33

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: [résolu][ZF 1.8]modification d'un enregistrement

Salut,

Pour répondre à ta question je pense que ton "id" est affecté grâce a ses lignes au chargement de ta page.

Code:

$albums = new Model_DbTable_Albums();
$form->populate($albums->getAlbum($id));

1 ligne =>tu créer un nouvel objet "album"
2 ligne =>Tu récupère une instance d'album (id,nom,titre,auteur....) qui correspond a "$id"
          =>Avec la méthode populate de zend_form tu rempli les champs ton formulaire avec les informations contenu dans ton objet "$album" et donc tu rempli le champs hidden "id"?


Voila, j'espère que cela va pouvoir t'aider et j'espère aussi ne pas avoir trop dit de bêtises.
Si je me trompe veuillez me corriger.

Bonne continuation.


A+ Guelo Super Star

Hors ligne

 

#3 06-08-2009 18:08:57

oswalidos
Membre
Date d'inscription: 12-07-2009
Messages: 39

Re: [résolu][ZF 1.8]modification d'un enregistrement

merci bien et désolé pour le retard ,

je vois que votre raisonnement est tres logique,mais peu etre,  un detail important est manquant :

le  $albums->getAlbum($id) renvoie un tableau associatif (key : nom de l'attribut ,value : la valeur de l'attribut)

$form->poputale() attend un tableau associative  (key :nom de l'element du formulaire ,value :la valeur qui va etre affecté a cet element )

je peux conclure : ce que vous avez dit est vrai a condition que les noms des attributs sont les noms des elements du formulaire sachant que la methode getAlbum applique toarray() sur l'objet retourné par :
fetchRow('id = ' . (int)$id);

je ne sais si ce que je dit est evident , logique ou peu etre du bla bla bla ?

merci encore GueloSuperStar wink

Hors ligne

 

#4 06-08-2009 18:35:57

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: [résolu][ZF 1.8]modification d'un enregistrement

Bonsoir,

Oui voila c'est ça.

$albums->getAlbum($id) tu me dit qu'il renvoi un tableau associatif (key : nom de l'attribut ,value : la valeur de l'attribut).

Donc $albums->getAlbum($id) renvoi un tableau de ce type => array(['id'=>1,'nom'=>'toto');



$form->poputale() à besoin comme  paramètre un tableau associatif en l'occurrence c'est le cas.

Et pour que tout fonctionne bien il faut que les clés du tableau associatif correspondent aux name ou id des champs du formulaires.

En espérant avoir été clair smile

bon courage.


A+ Guelo Super Star

Hors ligne

 

#5 06-08-2009 18:52:48

oswalidos
Membre
Date d'inscription: 12-07-2009
Messages: 39

Re: [résolu][ZF 1.8]modification d'un enregistrement

oui , vous avez etais claire ,mais mon problem est un cas similaire a ceci mais ça ne fonctionne pas et maintenant avec votre aide j'ai pu resoudre le probleme : j'ai nommé le champ hidden 'id' qui est different de l'attribut nommé 'ID_UTL' ,pour les autres attribut je l'ai tous nommé avec les meme nom des attributs question de lisibilité pas autre chose .
maintenant c'est claire dans me tete , merci encore SuperStar wink

Hors ligne

 

#6 06-08-2009 19:13:54

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: [résolu][ZF 1.8]modification d'un enregistrement

Content d'avoir pu aider wink


A+ Guelo Super Star

Hors ligne

 

#7 06-08-2009 21:46:59

throrin19
Membre
Date d'inscription: 01-03-2009
Messages: 318
Site web

Re: [résolu][ZF 1.8]modification d'un enregistrement

pour t'aider, au niveau du formulaire pour l'action je fais un $this->url() ce qui me permet de récupérer l'id de mon enregistrement (passé en param). Comme sa je n'ai pas besoin de rajouter un input hidden pour l'ID. Si sa peut t'aider ^^

Hors ligne

 

#8 06-08-2009 23:06:45

oswalidos
Membre
Date d'inscription: 12-07-2009
Messages: 39

Re: [résolu][ZF 1.8]modification d'un enregistrement

elle parait élégante comme solution , je vais l'essayer wink

Hors ligne

 

#9 07-08-2009 13:36:58

oswalidos
Membre
Date d'inscription: 12-07-2009
Messages: 39

Re: [résolu][ZF 1.8]modification d'un enregistrement

merci smile

throrin19 a écrit:

pour t'aider, au niveau du formulaire pour l'action je fais un $this->url() ce qui me permet de récupérer l'id de mon enregistrement (passé en param)

en fait j'ai chercher dans la doc et l' apidoc/core mais pour une classe derivé de Zend_Form je comprend pas comment tu utilise la methode url() dans la formulaire . si tu parle du view helper "url" alors $this->url() s'ecrit dans les fichiers .phtml et avec des parametres .
merci d'eclaircir votre methode pour recuperer l'id smile

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