2009-09-20 9 views
0

Je suis à peu près sûr maintenant que cela ne peut pas être fait mais j'apprécierais des éclaircissements sur pourquoi, donc je peux éviter des situations similaires dans le futur! J'ai un formulaire qui, lorsqu'il est soumis en fonction de l'entrée de l'utilisateur, se termine ou nécessite une entrée supplémentaire avec un paramètre devant être transmis au nouveau formulaire.Remplir un élément zend_form à partir d'une action transférée

La soumission initiale fonctionne très bien et les valeurs sont bien accessibles sous la forme suivante! Lorsque je fais ce qui suit dans l'action que je redirige vers, l'ID correct est imprimé à l'écran.

if($this->_getParam('fooID') != null){ 
    echo "FOO: ".$this->_getParam('fooID'); 
} 

Pourtant, pour une raison quelconque, je ne peux pas ajouter soit un élément à la forme $ initialisées dans cette action et je ne puis remplir la valeur d'un champ existant avec toute valeur.

$form->populate(array('fooID' => $this->_getParam('fooID'))); 

ci-dessus simplement ne fait rien et la valeur est pas remplie, l'élément de référence est instancié comme ceci:

 $this->addElement('hidden', 'fooID', array(
     'decorators' => $this->_noElementDecorator, 
     'validators' => array(
      'Digits' 
     ), 
     'required' => true 
    )); 

Ce qui est bizarre est bien que si je change fooid comme nom de l'élément caché, juste id, la valeur est remplie avec le paramètre url de la page précédente de soumission de formulaire. Comme je l'ai dit je sais que cela ne peut pas être fait, je me demande juste où se trouve la limitation si je peux imprimer la valeur côte à côte avec l'instruction qui ne remplit pas la valeur de l'élément.

+1

Cela devrait fonctionner. Avez-vous essayé de remplir fooID juste à partir d'une chaîne prédéfinie pour voir si cela fonctionne réellement du tout? –

+0

J'ai essayé juste de remplir le champ avec une valeur magique comme: $ form-> populate (array ('fooID' => '10')); Même cela ne fonctionne pas! –

+0

un peu plus de contexte peut être utile: par exemple quand appelez-vous $ form-> isValid()? Avant ou après le $ form-> populate()? – Steve

Répondre

0
  • Est-il possible que vous changiez la valeur après que votre populate() s'exécute? Par exemple: $form->isValid($this->_request->getPost()); définira de nouvelles valeurs de formulaire.

  • Essayez var_dump($form->fooID->getValue()); comme une ligne de débogage après populate(), et une fois avant que l'action se termine? Qu'est-ce que cela vous montre?