分配视图时出现zend错误

时间:2012-11-05 19:22:34

标签: php zend-framework2 zend-view

所以安装了最新的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

我是否必须将其设置在其他地方?

2 个答案:

答案 0 :(得分:2)

ZF2与之前版本的Zend Framework有很大的不同,所以你可能会遇到一些像这样的问题。

您遇到的错误是因为$this->viewnull而没有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
    ));
}