0

モジュールごとに異なるコンテンツを持つサイドバーのコードを生成する方法を理解しようとしています。

これは私のlayout.phtml(モジュール/アプリケーション/ビュー/レイアウト)です

....
<div class="main-container">
    <aside>
      <?php echo $this->sidebar; ?> 
    </aside>
    <section>
    <?php echo $this->content; ?>
    </section>
</div>
....

私のごくわずかな経験で、$this->content は選択したモジュールの出力であると推測できます。モジュールごとに $this->sidebar を作成するにはどうすればよいですか?

4

1 に答える 1

1

あなたはそうしない。ちょっと意地悪なので、ちょっと説明させてください。

Zend Framework 2 では、 の使用ViewHelpersが強く推奨されています。ViewHelper の作成は非常に簡単です。ViewHelper のタスクは単純でなければなりません。つまり、ViewHelper を作成するときはいつでも、「現在ログインしているユーザーのユーザー名を表示する」という例を示すために、1 つの非常に単純なタスクが必要です。

あなたの場合、「サイドバー」が必要です。これ自体は非常に有効な懸念事項ですが、それについて再確認する必要があります: サイドバーとは何ですか? サイドバーはウィジェットの集まりです。ウィジェットは ViewHelper です! したがって、サイドバーは ViewHelpers のコレクションになります!

アプローチ 1 - 提案

多くの専用 ViewHelper を作成し、layout.phtml でこのようにサイドバーを表示します

<div id="sidebar">
    <h2>My Account</h2>
    <div class="widget_content">
        <?php echo $this->userMiniProfile();?>
    </div>
    <h2>My Calendar</h2>
    <div class="widget_content">
        <?php echo $this->userCalendar();?>
    </div>
    <h2>My Foo</h2>
    <div class="widget_content">
        <?php echo $this->bar();?>
    </div>
</div>

アプローチ 2 - 動的サイドバーがある場合にのみ必要

と呼ばれる ViewHelper を作成し、次のsidebarように表示します。

<div id="sidebar">
    <?php echo $this->sidebar();?>
</div>

このセットアップでは、現在ログインしているユーザーをチェックし、データベースからサイドバーをロードし、サービスの結果に基づいてさまざまなウィジェットをレンダリングするいくつかの依存関係が viewHelper に含まれます。

基礎

シンプルな ViewHelper を作成するには、Evan Coury が後援するこのリンク、またはMichael Gallego が後援する詳細な紹介を参照してください。

于 2013-11-04T15:49:55.257 に答える