1

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

目前我有:

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

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

4

2 回答 2

0

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

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

于 2013-03-22T13:16:56.587 回答
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)
    }
}

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

/**
 * Some Controller Action 
 */
function myAction()
{
     return new MyViewModel();
}
于 2013-03-22T15:52:16.983 回答