所以安装了最新的2.0版Zend。我在控制器中定义视图然后显示时遇到问题。 如果我创建一个新的ViewModel并返回它,它工作正常。例如。
public function __construct()
{
$this->view = new ViewModel();
}
$this->view->hello="hey";
$this->view->test="there";
return $this->view;
但是我从来没有在Zend 1.8或之前做到这一点。 在没有创建新模型的情况下,它会给我以下错误:
Strict Standards: Creating default object from empty value in /path-to-controller-file.php
我是否必须将其设置在其他地方?
答案 0 :(得分:2)
ZF2与之前版本的Zend Framework有很大的不同,所以你可能会遇到一些像这样的问题。
您遇到的错误是因为$this->view
为null
而没有new ViewModel()
,因此在null上设置更多变量会触发该错误。从我对ZF2的理解 - 视图和控制器被故意分开。
通常在ZF2中,您可以从执行的操作返回数据:
$viewModel = new ViewModel();
$viewModel->hello = 'hey';
return $viewModel;
如果我没记错的话,你也可以返回一个数组:
return array('hello' => 'hey');
答案 1 :(得分:0)
只是为了扩展@DrBezas答案:
虽然您可以从控制器操作中返回一个数组,但肯定不是建议的路径。始终至少返回ViewModel的实例。仅返回数组将导致一些性能as explained in my blog。
最好的方法是始终返回一个完全限定的ViewModel,如
public function someAction()
{
$viewModel = new ViewMode();
$viewModel->setTemplate('MODULE / CONTROLLER / ACTION');
// more controller logic
return $viewModel->setVariables(array(
//key-value-paired view variables
));
}