2013-03-22 131 views
1

將默認變量添加到ViewModel的「Zend」方式是什麼?將默認變量添加到Zend2 ViewModel

目前我有:

return new ViewModel(array('form' => new CreateUserForm)); 

但我想總有一些變量添加到視圖模型陣列。就像時間和日期說的一樣,或者菜單的類別。我正在考慮擴展ViewModel,因爲這看起來像OO的方式,但Zend總是以不同的方式做...

+0

你可能會想要將ViewHelper用於渲染菜單等內容。看看這裏:http://framework.zend.com/manual/2.0/en/modules/zend.view.helpers.advanced-usage.html。 – 2013-03-22 13:11:08

回答

0

如果你想在有一些額外的功能,你可以隨時擴展視圖模型...

class MyViewModel extends ViewModel 
{ 
    /** 
     * Default Variables to set 
     */ 
    protected $_defaultValues = array(
     'test' => 'bob' 
    ); 

    /** 
    * Constructor 
    * 
    * @param null|array|Traversable $variables 
    * @param array|Traversable $options 
    */ 
    public function __construct($variables = null, $options = null) 
    { 
     //$variables = array_merge($this->_defaultValues, $variables); 
     $this->setVariables($this->_defaultValues); 

     parent::__construct($variables, $options) 
    } 
} 
在控制器

現在只是用回新的視圖模型來代替:

/** 
* Some Controller Action 
*/ 
function myAction() 
{ 
    return new MyViewModel(); 
} 
+0

這就是我的想法。但這是「Zend」嗎? – 2013-03-22 16:23:17

+0

有許多方法可以使用ZF2來做事情,它不會強迫你使用某種開發方式,儘管這可以是好的也可以是不好的:) – Andrew 2013-03-22 16:58:11

0

一種方法可能是在控制器中有一個方法,它返回ViewModel填充時間,日期等然後將AddVariables()添加到Action中返回的模型中。

但是,更好的方法是使用查看幫助程序,因爲它們將在整個應用程序的每個視圖/佈局中可用。