向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中返回模型。
但是,更好的方法是使用视图帮助器,因为它们将在整个应用程序的每个视图/布局中可用。