添加默认变量到Zend2视图模型


Adding Default Variables to Zend2 ViewModel

向ViewModel添加默认变量的"Zend"方式是什么?

目前我有:

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

但是我想总是添加一些变量到ViewModel数组。比如时间和日期,或者菜单的类别。我正在考虑扩展ViewModel,因为这似乎是OO的方式,但Zend总是做不同的事情…

如果你想要一些额外的功能,你可以扩展ViewModel…

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

现在在控制器中只需使用return your new view model:

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

一种方法可以是在你的控制器中有一个方法返回ViewModel填充时间,日期等,然后addVariables()在Action中返回模型。

但是,更好的方法是使用视图帮助器,因为它们将在整个应用程序的每个视图/布局中可用。