2

Zend Frameworkでは、ビューの上部にある同じ情報を特定のコントローラー全体に伝達する必要がある一般的なユースケースがあります。

たとえば、「本」コントローラーがある場合、ページの上部に本の概要情報を表示し、本の下にコメントや詳細情報などを表示するためのタブ付きインターフェイスを設定します。各タブはのアクションです。ブックコントローラー。次のように、コントローラーのビュー全体に要約情報を伝達するための推奨される方法は何ですか。

  1. 各アクションで要約帳情報を継続的に取得しているわけではありません。
  2. 私は自分の見解で情報を繰り返していません。

ビュー内からZendViewHelper、プレースホルダー、またはアクションヘルパー($ this-> action ...)を使用することを考えました。

助言がありますか?

4

2 に答える 2

0

タブのコンテンツを動的にロードします(アクションヘルパーを介して現在のソリューションと簡単に統合できるはずAjaxContentです。アクションの応答をタブコンテナにロードするだけです。

非ajaxソリューションを使用することにした場合、複数のページで同じピース情報が必要になるため、コードは繰り返し実行されます。ビューヘルパーは、プレゼンテーションとマークアップにのみ必要なのに、ある種のロジック(またはロジックのプロキシ)を実行するため、 Apartialはニーズにより適しているはずです。

スマートキャッシュ方式(おそらくセクション/タブごとに1つのキャッシュエントリ)を使用していると仮定すると、フェッチされる情報はシステム上でそれほど難しくないはずです。

于 2010-07-15T22:00:48.207 に答える
0

init()コントローラのメソッドで本の情報を取得したいようです。

class MyController extends Zend_Controller_Action
{
     protected $_book;

     public function init()
     {
         // get the book data/model, etc
         $book = $this->_getBook();

         // if necessary, store the book for use in the actions
         $this->_book = $book;

         // store the book in the view
         $this->view->book = $book;
     }
}

アクションが本の情報のみをレンダリングする場合は、おそらく空のアクションメソッドを使用して、ビュースクリプトに処理を任せることができます。

これの唯一の欠点は、すべてのアクションの本のデータを取得することです。したがって、本のデータを必要としないアクションがある場合は、それをフェッチするオーバーヘッドを消費することになります。

于 2010-07-15T17:37:07.183 に答える