1

Zend Framework アプリケーションのレイアウトに Zend_Layout を使用しています。非常に単純ですが、レイアウトで行う必要がある操作がまだいくつかあります。今のところ、コードは PHP ブラケットの間に含まれていますが、これは実際には最もクリーンな方法ではないように感じます。

プラグインを使用している人を見ましたが、これは私が望んでいる方法ではないと思います。明らかに、「複雑な」部分を抽出し、適切なアクション/コントローラーの方法でそれを行い、レイアウトでプレースホルダーを使用することができました。これは行く方法ですか?そのような例はありますか (たとえば、独自のアクションで委任されたナビゲーション メニュー)?

4

2 に答える 2

3

navigation()プレースホルダー ビュー ヘルパーの具体的な実装です。

同じプレースホルダーの実装を作成するか、使用することができます

  • include('myhtml.phtml');
  • $this->render('script.phtml');
  • パーシャル
  • 部分ループ
  • プレースホルダ
  • ヘルパーを表示

何が必要かによります。

おそらくすでに聞いたことがあると思いますが、アクション スタックは悪です。

于 2010-09-02T10:34:01.010 に答える
1

takeshin が言ったように、navigation() プレースホルダーはおそらく進むべき道です。ただし、この特定のケースでは Zend_Navigation のセットアップを行いたくなかったので、カスタム ビュー ヘルパーを使用しました。

application/views/helpers/Menu.php:

<?php

class Zend_View_Helper_Menu extends Zend_View_Helper_Abstract {

    public function menu() {
        // my code ...
        $this->view->menu = $menu;

        return $this->view->render('helpers/menu.phtml');
    }

}

application/views/scripts/helpers/menu.phtml:

<ul>
    <?php foreach ($this->menu as $item) { // print menu } ?>
</ul>

このようにして、レイアウトからこのヘルパーを簡単に呼び出すことができます。

...
<div id="menu">
    <?php echo $this->menu(); ?>
</div>
...
于 2010-09-06T06:55:51.520 に答える