将非Zend_Form变量传递给ViewScript

时间:2009-11-24 18:01:17

标签: zend-framework zend-form

我正在使用Zend_Form和ViewScript装饰器。这个表单将用于管理两个相当简单的对象类型,但是它是一个很大的形式,所以我想要一个表单/处理函数。

所以我有这个:

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'))));

我想要做的是能够将非Zend_Form变量传递给viewScript。我尝试将引用传递给$ this但没有运气。有没有办法打这样的话:

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

感谢您的帮助

2 个答案:

答案 0 :(得分:7)

根据API Docs除了分隔符之外在装饰器上设置的任何选项,placement和viewScript将作为局部变量传递给viewScript。所以:

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

然后在你的viewScript中'foo'应该是'bar'。

答案 1 :(得分:1)

如果需要将变量传递给控制器​​外显示的表单,请使用以下

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

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

您将看到数组转储。