0

于是安装了Zend最新的2.0版本。我无法在控制器中定义视图然后显示。如果我创建一个新的 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

我必须将它设置在其他地方吗?

4

2 回答 2

2

ZF2 与以前版本的 Zend Framework 有很大不同,因此您可能会遇到一些这样的问题。

您遇到的错误是因为没有,因此在 null 上设置更多变量会触发该错误$this->view。根据我对 ZF2 的理解 - 视图和控制器已被故意分离。nullnew ViewModel()

通常在 ZF2 中,您从执行以下操作的操作中返回数据:

$viewModel = new ViewModel();
$viewModel->hello = 'hey';

return $viewModel;

如果我没记错的话,你也可以返回一个数组:

return array('hello' => 'hey');
于 2012-11-05T21:51:49.527 回答
0

只是为了扩展@DrBezas 答案:

虽然您确实可以从控制器操作中返回一个数组,但这肯定不是建议的路线。总是至少返回一个 ViewModel 实例。如我的博客所述,仅返回一个数组会导致一些性能问题。

最好的方法是始终返回一个完全合格的 ViewModel,例如

public function someAction() 
{
    $viewModel = new ViewMode();
    $viewModel->setTemplate('MODULE / CONTROLLER / ACTION');

    // more controller logic

    return $viewModel->setVariables(array(
         //key-value-paired view variables
    ));
}
于 2012-11-06T07:37:35.903 回答