Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
salut ,
je suis ce tutorial,tout va bien mais j'ai du mal a comprendre quelque chose :
un formulaire avec un champ caché
$id = new Zend_Form_Element_Hidden('id');
l'action modifier :
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
Salut,
Pour répondre à ta question je pense que ton "id" est affecté grâce a ses lignes au chargement de ta page.
$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.
Hors ligne
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
Hors ligne
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
bon courage.
Hors ligne
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
Hors ligne
Content d'avoir pu aider
Hors ligne
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
elle parait élégante comme solution , je vais l'essayer
Hors ligne
merci
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
Hors ligne
Pages: 1