0

そこで、Zendの最新の2.0バージョンをインストールしました。コントローラでビューを定義してから表示するのに問題があります。新しいViewModelを作成して返すと、正常に機能します。例えば。

public function __construct()
    {
        $this->view = new ViewModel();
    }

$this->view->hello="hey";
$this->view->test="there";
return $this->view;

しかし、Zend1.8以前ではこれを行う必要はありませんでした。新しいモデルを作成しないと、次のエラーが発生します。

Strict Standards: Creating default object from empty value in /path-to-controller-file.php

別の場所に設定する必要がありますか?

4

2 に答える 2

2

ZF2は以前のバージョンのZendFrameworkとは大きく異なるため、おそらくこのようないくつかの問題が発生します。

発生しているエラーは、$this->viewnullないためnew ViewModel()であり、したがってnullにさらに変数を設定すると、そのエラーがトリガーされます。ZF2の私の理解から、ビューとコントローラーは意図的に分離されています。

通常、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 に答える