3

より具体的なナビゲーションのために、メイン ナビゲーションとサブメニューを組み合わせて使用​​しようとしています。

私のレイアウトでは、次のようにビュー ヘルパーを呼び出しています。

$this->navigation('main_navigation')->menu()

そして私の見解では、私はそれを次のように呼んでいます:

$this->navigation('sub_navigation')->menu()

navigation()問題は、ビュー ヘルパーを複数回呼び出すたびに、両方の場所で2 番目のヘルパーが出力されることです。つまり、メイン ナビゲーションメニューサブナビゲーション メニューの両方のサブナビゲーションを出力しています。

マージされた構成は次のようになります。

'navigation' => array(
    'main' => array(
        'home' => array(
            'label' => 'Home',
            'route' => 'myroute',
        ),
        'somepage' => array(
            'label' => 'Me',
            'route' => 'somepage'
        )
    ),
    'sub' => array(
        'test' => array(
            'label'  => 'Test',
            'route'  => 'myroute',
            'action' => 'test'
        ),
        'other-test' => array(
            'label'  => 'Other Test',
            'route'  => 'myroute',
            'action' => 'other-test'
        )
    )
)

navigationビュー ヘルパーを使用して、呼び出しごとに正しいメニューを出力するにはどうすればよいですか?

4

1 に答える 1

11

menu、およびヘルパーbreadcrumbsはプラグインとして登録されます。初めて呼び出すと、コンテナ「main_navigation」が作成されます。その後、初めて呼び出すと、オブジェクトが作成され、直接コンテナーが注入されます。sitemaplinks$this->navigation('main_navigation')Zend\View\Helper\Navigationmenu() Zend\View\Helper\Navigation\Menu

これは欠陥を示しています。$this->navigation('sub_navigation')今呼び出すと、ナビゲーション コンテナーがnavigation()ビュー ヘルパーに読み込まれます。次に を呼び出すmenu()と、メニュー ビュー ヘルパーは既に作成されています。そのため、新しいコンテナはもう注入されません。

これは明らかにコード ベースのバグです。簡単な修正方法が 1 つあります。メニュー ヘルパーは、コンテナー文字列も受け入れることができます。

<?php echo $this->navigation()->menu('main_navigation'); ?>
<?php echo $this->navigation()->menu('sub_navigation'); ?>

私はそれについて問題を提出しました。バグは修正される予定です。

于 2012-10-21T09:54:27.093 に答える