2010-10-05 10 views
4

J'ai une forme zend instanciévariables passe dans le formulaire Zend

$form = Form_Example(); 

Maintenant, je veux passer une carte d'identité de mon contrôleur à ma forme.

Je l'ai fait:

$form = Form_Example(array('id' => $id)); 

intérieur de la forme que je tente de l'appeler par:

$this->id 

Mais ce n'est pas là.

Quelqu'un sait comment obtenir cet id dans le formulaire?

Merci

+0

Je pense que ce lien aide http: //www.carlowens .me/2010/04/passing-arguments-from-controller-into-a-zend-form/ –

Répondre

12

Assurez-vous de setter pour le l'élément, dans votre cas. public function setId($id) Le constructeur Zend_Form vérifie si la méthode setter existe pour la propriété, si elle existe, elle est appelée, sinon elle définit l'attribut du formulaire, voir setAttrib($key, $value).

Le résultat final sera quelque chose comme ça

class Application_Form_YourForm extends Zend_Form { 

    /** 
    * Id 
    * @var <type> 
    */ 
    protected $_id = null; 

    /** 
    * Setter for ID 
    * @param <type> $id 
    */ 
    public function setId($id){ 
     $this->_id = $id; 
    } 

    // Rest of your code... 
} 
+0

Solution simple à un problème apparemment compliqué. Je vous remercie! –

3

Vous devriez pouvoir accéder à la propriété à l'intérieur id forme avec

$this->_attribs['id']