0

Viewビューファイルをロードした後、クラスでねえ。render()次のようにデータにアクセスする必要があります。

$this->model;

または好き:

$this->data['model'];

または、ビューファイルを含める前のrender()メソッドには、次のようなものがあります。

$model = $this->data['model'];

// and then in my view file I can access the data by just calling it locally
$model->getSomething();

ビューファイル内から?

$this->data['model'];3つの方法は機能しますが、ビューファイル内からデータにアクセスする正しい方法は次のようなものだと思い始めています。

どちらが正しい方法ですか?

ありがとう。

4

1 に答える 1

1

正しく実装されたMVCでは、ビューはダムテンプレートではありません。これはクラスのインスタンスであり、モデルレイヤーからデータを要求できます。そして、モデルはクラスやインスタンスではありません。これはレイヤーです(MVCはプレゼンテーションとモデルの2つのレイヤーで構成されています)。

MVCデザインパターンのビューは、すべてのUIロジックを担当します。これは、(必要に応じて)複数のテンプレートから応答を作成することを意味します。それ以外の場合、唯一の応答はHTTPロケーションヘッダーである可能性があります。

基本的に、ビューインスタンスに何かが必要な場合、次のようになります。

$library = $this->serviceFactory('Library');
$details = $library->getCurrentBookDetails();

$someTemplate->assign('title', $details['title']);
$someTemplate->assign('content', $details['content']);

この場合、サービスファクトリは現在のビューとコントローラの間で共有され、Libraryサービスの単一のインスタンスのみがインスタンス化されるようにします。したがって、両方のインスタンスがモデルレイヤーの同じ状態と対話する機能を提供します。

于 2013-01-01T18:22:34.390 に答える