Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-02-2013 14:09:56

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Zend_Form : exécution du init()

Bonjour,

Je cherche des infos sur le remplissage des valeurs d'un formulaire basé sur Zend_Form. Voici mon code :

controller :

$myform = new Application_Form_MyForm();
$myform->setId(12345);
$myform->setNom('coucou');
$myform->setTitre('titre');

form :

class Application_Form_MyForm extends Application_Form
{
    public function _construct() { ... }
    public function init() { ... }

    public function getId() { ... }
    public function setId() { ... }
    public function getNom() { ... }
    public function setNom() { ... }
    public function getTitre() { ... }
    public function setTitre() { ... }
}

Dans le init(), pour chaque élément du formulaire, je fais un getValeur(), par exemple pour le titre :

$titre = new Zend_Form_Element_Text('titre');
$titre
    ->setLabel('titre')
    ->setRequired(false)
    ->setValue($this->getTitre())
;
$this->addElement($titre);

Mais quand j'affiche le formulaire dans ma vue, j'ai le champ input 'titre' avec une valeur vide. J'ai l'impression que la fonction init() s'exécute avant mes getter (et que ceux-ci renvoient une valeur vide, puisqu'elle n'a pas encore été settée), et donc que dans mon controller, définir mes valeurs ne sert à rien (le form est déjà créé avec les valeurs vides).

Est-ce que vous pouvez m'aiguiller sur la façon de mettre les valeurs dans le formulaire (par exemple dans le cas d'une édition, je récupère les valeurs de ma bdd et je les pousse dans le formulaire) ?

J'ai vu des exemples sur le net, avec les valeurs qui sont passées par un array() dans le __construct(à, mais cela me semble moins "propre" qu'avec des setter/setter pour chacune des valeurs.

Merci pour votre aide.

Hors ligne

 

#2 12-02-2013 12:00:34

Juch
Membre
Lieu: Paris 17e
Date d'inscription: 29-04-2009
Messages: 48

Re: Zend_Form : exécution du init()

non utilise la méthode qui est faite pour ça.
$form->populate(array);
Ton array est un tableau à indexation par clé, dont chaque clé est identique au nom d'un de tes champs.

La méthode setValue() quant à elle met une valeur par défaut dans ton champ

Hors ligne

 

#3 13-02-2013 21:47:20

17795
Membre
Date d'inscription: 21-03-2010
Messages: 36

Re: Zend_Form : exécution du init()

Merci Juch.

Il y a quelque chose qui m'échappe avec cette méthode. J'ai fait ceci :

$data = array(); // avec les clés identiques au nom des champs
$myform = new Application_Form_MyForm();
$myform->populate($data);

Si je var_dumpe $myform à ce moment, tous les champs sont vides... Est-ce normal ? Qu'est-ce que je vais mal ?

Merci

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