将默认变量添加到Zend2 ViewModel

时间:2013-03-22 13:02:44

标签: php zend-framework2 viewmodel

将默认变量添加到ViewModel的“Zend”方法是什么。

目前我有:

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

但我想总是在ViewModel数组中添加一些变量。喜欢时间和日期说,或菜单的类别。我正在考虑扩展ViewModel,因为它似乎是OO方式,但Zend总是以不同的方式做事......

2 个答案:

答案 0 :(得分:0)

一种方法可能是在控制器中使用一个方法返回填充了时间,日期等的ViewModel,然后将addVariables()添加到Action中返回的模型中。

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

答案 1 :(得分:0)

如果你想要一些额外的功能,你总是可以扩展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)
    }
}

现在在您的控制器中,只需使用返回您的新视图模型:

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