3

質問に編集を投稿しました。それに取り組んでいる間、私は問題が簡単に単純化できることに気付きました。サブメニューのカスタム形式が必要なので、部分的に使用する必要があります。しかし、その後問題が発生します。

以下のコードは INCORRECT レベル (0) を示しています。

            echo $this->navigation()->menu()
                ->setMinDepth(1)
                ->setMaxDepth(1)
                ->setRenderParents(false)
                ->setOnlyActiveBranch(true)
                ->renderPartial(null, array('partials/menu.phtml', 'default'));

以下のコードは、正しいメニューレベルを示しています (1)

            echo $this->navigation()->menu()
                ->setMinDepth(1)
                ->setMaxDepth(1)
                ->setRenderParents(false)
                ->setOnlyActiveBranch(true)
                ->render();

何か案は?みんなお願いします。助けていただければ幸いです!

編集

私のパーシャル/menu.phtml:

    foreach ($this->container as $page) 
{
    $active = $page->isActive();
    echo '<div class="item">';
        echo '<a class="'. ($active ? 'active' : '') .'" href="' . $this->baseUrl($page->getHref()) . '">' . $page->getLabel() . '</a>';
    echo '</div>';
}

編集2

Zend_Navigation についての私の理解は、まずコンテナを準備し、それをパーシャルに通すことでした。

            $nav = $this->navigation()->menu()->setOnlyActiveBranch(true)->getContainer();
        echo $this->navigation()->menu()->renderPartial($nav, array('/partials/menu.phtml', 'default'));

set{Min/Max}Depth,parentRendering をコンテナに渡すときに set{Min/Max}Depth,parentRendering を設定するポイントは何ですか?

4

3 に答える 3

1

私はこのコードを使用します:

<?=$this->navigation()->menu()->renderPartial(null, 'shared/menu.phtml')?>

また、深く機能するようtrueに、メソッドに渡す必要があります。$page->isActive(true)

あなたの部分で

foreach ($this->container as $page) {
  $active = $page->isActive(true);
  if (count($page->getPages())) {
    foreach ($page->getPages() as $subPage) {
      $active = $subPage->isActive(true);
      echo '<div class="item">';
        echo '<a class="'. ($active ? 'active' : '') .'" href="' . $this->baseUrl($subPage->getHref()) . '">' . $subPage->getLabel() . '</a>';
      echo '</div>';      
    }
  }
}

2 番目の foreach の前に、サブメニューを表示するかどうか、いつ表示するかのチェックを追加できます。

私の2セント。

編集

これを試して:

$partial = array('partials/menu.phtml', 'default');
echo $this->navigation()->menu()
  ->setMinDepth(1)
  ->setMaxDepth(1)
  ->setRenderParents(false)
  ->setOnlyActiveBranch(true)
  ->setPartial($partial)
  ->render();
于 2012-10-16T09:19:25.847 に答える
0

同じ問題に対する答えを探しているときにこれに出くわしました。Zend_View_Helper_Navigation_Menu のコードを調べたところ、どのビュー ヘルパー オプションもビュー パーシャルに渡されていないように見えますが、なぜ渡されなかったのかわかりません... (ZF 1.12 では、 Zend_View_Helper_Navigation_Menu の 736 行目で、渡されるのはコンテナー自体だけです。オプション配列は簡単に一緒に渡すことができます。または、事前にフィルター処理されたコンテナーは、ZF に機能要求を提出する価値があるかもしれません)。

これらのオプションは、デフォルトの方法でレンダリングするために Zend_Navigation_Container をフィルタリングする純粋なrenderMenu方法です。renderPartialあなたが言うように、最初にコンテナをフィルタリングしてからメソッドの最初の引数として渡すことで同じことを達成できるようです

于 2012-11-16T18:13:51.760 に答える