5

2 つの異なるナビゲーションを持つことは可能ですか?

例えば ​​:

//in module.config.php
'service_manager'=>array(
        'factories'=>array(
            'navigation1'=>'Zend\Navigation\Service\DefaultNavigationFactory',
            'navigation2'=>'Zend\Navigation\Service\DefaultNavigationFactory',
        ),
    ),
    'navigation'=>array(
        'navigation1'=>array(
            'home'=>array('type' => 'mvc','route' => 'home','active'=>false,'label' => 'Home','title' => 'Home',
                'pages'=>array(
                    'contact'=>array('type' => 'mvc','route'=>'contact','active'=>false,'label'=>'Contact','title' =>'Contact'),
                )
            ),
        ),
        'navigation2'=>array(
            'home'=>array('type'=>'mvc','route'=>'home','active'=>false,'label'=>'Home','title'=>'Home',
            'contact'=>array('type'=>'mvc','route'=>'faq','active'=>false,'label'=>'Faq','title'=>'Faq'),
            ),
        ),

//Dans laout
<?php echo $this->navigation()->menu('navigation1')->setMinDepth(0);?>
<hr />
<?php echo $this->navigation()->menu('navigation2')->setMinDepth(0);?>

異なるページを含む 2 つの異なるメニューが必要ですが、この方法は実行されません。

誰もがアイデアを持っていますか?

ありがとう

ビルザット

4

2 に答える 2

6

ナビゲーション グループごとにカスタム ファクトリ クラスを提供する必要があります。たとえば、ZfcAdmin がこれを行う方法を参照してください。

  1. カスタム ファクトリ クラスを作成する

    <?php
    namespace ZfcAdmin\Navigation\Service;
    
    use Zend\Navigation\Service\DefaultNavigationFactory;
    
    class AdminNavigationFactory extends DefaultNavigationFactory
    {
        protected function getName()
        {
            return 'admin';
        }
    }
    

    ソース: https://github.com/ZF-Commons/ZfcAdmin/blob/master/src/ZfcAdmin/Navigation/Service/AdminNavigationFactory.php

  2. AdminNavigationFactory の登録

    // in Module.php
    public function getServiceConfig()
    {
        return array(
            'factories' => array(
                'admin_navigation' => 'ZfcAdmin\Navigation\Service\AdminNavigationFactory',
            ),
        );
     }
    

    ソース: https://github.com/ZF-Commons/ZfcAdmin/blob/master/Module.php#L90

  3. getNameモジュールの構成で、ファクトリのメソッドで指定したキーの下にナビゲーション ツリーを定義します。例として、これは ZfcUserAdmin が ZfcAdmin メニューに自身を追加する方法です:

    'navigation' => array(
        'admin' => array(
            'zfcuseradmin' => array(
                'label' => 'Users',
                'route' => 'zfcadmin/zfcuseradmin/list',
                'pages' => array(
                    'create' => array(
                        'label' => 'New User',
                        'route' => 'admin/create',
                    ),                        
                ),
            ),
        ),
    ),
    

    ソース: https://github.com/Danielss89/ZfcUserAdmin/blob/master/config/module.config.php

于 2012-11-21T13:10:52.600 に答える
4

/vendor/MyNamespace/library/MyNamespace/Navigation/Service/SecondaryNavigationFactory.php

namespace MyNamespace\Navigation\Service;

use Zend\Navigation\Service\DefaultNavigationFactory;

class SecondaryNavigationFactory extends DefaultNavigationFactory {

    protected function getName() {
        return 'secondary';
    }

}

/config/autoload/global.php

return array(
    'service_manager' => array(
        'factories' => array(
            'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',
            'secondary' => 'MyNamespace\Navigation\Service\SecondaryNavigationFactory',
        ),
    ),
    'navigation' => array(
        'default' => array(
            array(
                'label' => 'Item-1.1',
                'route' => 'foo',
            ),
            array(
                'label' => 'Item-1.2',
                'route' => 'bar',
            ),
        ),
        'secondary' => array(
            array(
                'label' => 'Item-2',
                'route' => 'baz',
            ),
        ),
    ),
);

/module/Application/view/layout/layout.phtml

<?php echo $this->navigation('navigation')->menu(); ?>
<?php echo $this->navigation('secondary')->menu(); ?>
于 2013-04-11T20:20:45.213 に答える