したがって、モデルには、データの断片を取得するための再利用可能な単体テスト可能なメソッドが必要です。これには、文字列、オブジェクト、配列などがあります。これは、データを適切に処理するロジックがあるため、意味のある方法で使用でき、また、単体にすることができます。テスト済み。
コントローラでは、そのモデルのインスタンスをインスタンス化し、使用するデータを取得するために必要なメソッドを使用します。次に、それをビューに渡します。これで、これをアクション自体に含めることができます。または、これを実行してデータを返す再利用可能なメソッドを作成して、他のアクションでも使用できるようにすることができます。これが他のコントローラーでも使用できるものである場合は、おそらくコントローラーが使用するアクションヘルパーを作成する必要があります....要点を理解します...同じものを設計する方法はたくさんあります。再利用可能なコードにどれだけ集中しているか。
コントローラからzf1のビューにデータを渡すには、次のようにする必要があります。
$this->view->whateverItIsCalled = $someValueOrArrayTypeThing;
次に、ビューでそれを使用したり、エコーしたりします。$this->whateverItIsCalled.
zf2ではこんな感じ
namespace Content\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class ArticleController extends AbstractActionController
{
public function viewAction()
{
// get the article from the persistence layer, etc...
$view = new ViewModel();
$articleView = new ViewModel(array('article' => $article));
$articleView->setTemplate('content/article');
$primarySidebarView = new ViewModel();
$primarySidebarView->setTemplate('content/main-sidebar');
$secondarySidebarView = new ViewModel();
$secondarySidebarView->setTemplate('content/secondary-sidebar');
$sidebarBlockView = new ViewModel();
$sidebarBlockView->setTemplate('content/block');
$secondarySidebarView->addChild($sidebarBlockView, 'block');
$view->addChild($articleView, 'article')
->addChild($primarySidebarView, 'sidebar_primary')
->addChild($secondarySidebarView, 'sidebar_secondary');
return $view;
}
}
ビューは、zf1で以前に使用したものと同じようにそれを使用します。
<?php // "content/article" template ?>
<div class="row content">
<?php echo $this->article ?>
<?php echo $this->sidebar_primary ?>
<?php echo $this->sidebar_secondary ?>
</div>
<?php // "content/article" template ?>
<!-- This is from the $articleView View Model, and the "content/article"
template -->
<article class="span8">
<?php echo $this->escapeHtml('article') ?>
</article>
<?php // "content/main-sidebar" template ?>
<!-- This is from the $primarySidebarView View Model, and the
"content/main-sidebar" template -->
<div class="span2 sidebar">
sidebar content...
</div>
<?php // "content/secondary-sidebar template ?>
<!-- This is from the $secondarySidebarView View Model, and the
"content/secondary-sidebar" template -->
<div class="span2 sidebar pull-right">
<?php echo $this->block ?>
</div>
<?php // "content/block template ?>
<!-- This is from the $sidebarBlockView View Model, and the
"content/block" template -->
<div class="block">
block content...
</div>
新しいビューモデルをインスタンス化してから、ビューに物事を渡す方法を確認できるだけでなく、異なる、より具体的なパーシャルを指定することもできます。
とにかく、それがあなたを助けることを願っています。基本的に、簡単に言えば、ZF2はいくつかの理由でZF1よりもパフォーマンスを向上させますが、オーバーヘッドを削減することは重要な理由です。多くのフレームワークは、ほとんどの場合、必要なときに必要なものだけが必要になるため、これを実行します。