我正在使用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))));
感谢您的帮助
答案 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);
您将看到数组转储。