8

Zend Framework MVC アプリと組み合わせてナビゲーション XML ファイルを使用しています。

トップレベルのメニューがレイアウトの上部にレンダリングされます。それを生成するコードは次のようになります。

$this->navigation()->menu()->renderMenu(null,array('maxDepth'   =>  0));

これにより、トップ メニューにスタイル設定したリンクの順序付けられていないリストが自動的にレンダリングされます。ここで、組み込みの Zend_Navigation の利点 (MVC と ACL の統合) をすべて活用しながら、カスタム マークアップを使用して、サブメニューを (アクティブなコンテナー ツリーをレンダリングするために) レンダリングしたいと考えています。これを挿入してこれを行います:

$this->navigation()->menu()->renderSubMenu();

実際、これをレンダリングするために必要な非常に特殊なマークアップのセットがあります。それは非常に大きく異なるので、順序付けられていないリストをスタイルして、希望するプレゼンテーションに対応させることはできないと思います。

サブメニューをカスタマイズするための簡単な方法 (必要に応じて複雑な方法) はありますか?

4

2 に答える 2

11

私のこの回答をチェックしてください: Getting Zend_Navigation menu to work with jQuery's Fisheye

要約すると、ナビゲーション用のビューを作成してページをループし、ページ メソッドを使用してカスタム マークアップを作成します。私の知る限り、現在、Navigation のデコレータのようなサポートはありません。

于 2009-12-28T22:16:28.167 に答える
7

Typeoneerror は私を正しい軌道に乗せました。これが私が最終的に使用したコードです:

layout.phtml で:

<?= $this->navigation()->menu()->renderMenu(null,array('maxDepth'   =>  0)); ?>
<? $this->navigation()->menu()->setPartial('sidemenu.phtml'); ?>
<?= $this->navigation()->menu()->render(); ?>

sidemenu.phtml で:

$this->navigation()->findByResource(
  Zend_Controller_Front::getInstance()->getRequest()->module .
  Zend_Controller_Front::getInstance()->getRequest()->controller
 );

 foreach ($this->container as $page) {
    if ($page->isVisible() && $this->navigation()->accept($page)) {
        if ($page->isActive()) {
            echo $page->getLabel();
            $subcontainer = $page->getPages();
            foreach ($subcontainer as $subpage) {
                echo $subpage->getLabel();
            }
        }
    }
 }

他の誰かが見つけるための答えとしてこれを残して、魅力のように働きました.

于 2009-12-29T00:27:41.980 に答える