2009-11-24 49 views
3

我使用Zend_Form和ViewScript裝飾器。這種形式將用於管理兩個相當簡單的對象類型,但它是一個很大的形式,所以我想要一個表單/處理函數。將非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的varaiables到viewScript。我嘗試通過引用$ this,但沒有這樣的運氣。有沒有一種方法調用是這樣的:

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

感謝您的幫助

回答

7

按照API Docs上除了分離器,放置裝飾設置任何選項,viewScript將被傳遞給viewScript與局部變量。所以:

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

然後在你的viewScript'foo'應該是'bar'。

+1

很酷謝謝。在ViewScript中會是this-> foo,以防有人絆倒這個。對於數組數組,我只會做'foo'=> $ args(雖然可能很明顯。) – timpone 2009-11-27 23:47:32

+0

是的,忘了提及$ this。 – smack0007 2009-11-28 13:05:37

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

你會看到陣列的轉儲。