将默认变量添加到 ViewModel 的“Zend”方式是什么。
目前我有:
return new ViewModel(array('form' => new CreateUserForm));
但我想总是向 ViewModel 数组添加一些变量。就像时间和日期一样,或者菜单的类别。我正在考虑扩展 ViewModel,因为这似乎是 OO 方式,但 Zend 总是以不同的方式做事......
将默认变量添加到 ViewModel 的“Zend”方式是什么。
目前我有:
return new ViewModel(array('form' => new CreateUserForm));
但我想总是向 ViewModel 数组添加一些变量。就像时间和日期一样,或者菜单的类别。我正在考虑扩展 ViewModel,因为这似乎是 OO 方式,但 Zend 总是以不同的方式做事......
一种方法可能是在控制器中有一个方法,该方法返回 ViewModel 填充时间、日期等,然后 addVariables() 到 Action 中返回的模型。
但是,更好的方法是使用视图助手,因为它们在整个应用程序的每个视图/布局中都可用。
如果你想要一些额外的功能,你总是可以扩展 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();
}