2009-11-24 8 views
3

J'utilise Zend_Form avec un décorateur ViewScript. Ce formulaire sera pour la gestion de deux types d'objets assez simples, mais est une grande forme, donc je voudrais avoir une seule fonction de formulaire/traitement.en passant des variables non Zend_Form à un ViewScript

J'ai donc ceci:

class GameManagementForm extends Zend_Form{ 

public function __construct($type='flash'){ 
    parent::__construct(); 

    //and later 
    $this->setDecorators(array(array('ViewScript', array('viewScript' => 'game/game-management.phtml')))); 

Ce que je voudrais faire est d'être en mesure de passer non Zend_Form varaiables au viewScript. J'ai essayé de passer un référencement à $ this mais pas de chance. Est-il possible d'appeler quelque chose comme ceci:

$this->setDecorators(array(array('ViewScript', array('viewScript' => 'game/game-management.phtml', $arg)))); 

grâce à l'aide

Répondre

7

Selon les API Docs toutes les options définies sur le décorateur en plus séparateur, le placement et viewScript sera transmis au viewScript en tant que variables locales . Donc:

$this->setDecorators(array(array('ViewScript', array(
     'viewScript' => 'game/game-management.phtml', 
     'foo' => 'bar' 
)))); 

Et puis dans votre viewScript 'foo' devrait être 'bar'.

+1

cool merci. Serait this-> foo dans le ViewScript au cas où quelqu'un trébucherait à travers cela. pour les tableaux de données je ferais juste 'foo' => $ args (bien que probablement évident.) – timpone

+0

Oui, j'ai oublié de mentionner le $ this. – smack0007

1

Si vous devez passer des variables à la forme affichée sur le contrôleur, utilisez les touches suivantes

# controller e.g. controllers/PhotosController.php 
$this->view->photos = array(1, 2, 3); 

et

# viewscript of the form e.g. form/photos.phtml 
$this->photos = $this->element->getView()->photos; 
var_dump($this->photos); 

Vous verrez décharge du tableau.

Questions connexes