Zend framework2 ZF2-带导航的多导航

Zend framework2 ZF2-带导航的多导航,zend-framework2,Zend Framework2,有可能有两种不同的导航方式吗 例如: //in module.config.php 'service_manager'=>array( 'factories'=>array( 'navigation1'=>'Zend\Navigation\Service\DefaultNavigationFactory', 'navigation2'=>'Zend\Navigation\Service\DefaultNavi

有可能有两种不同的导航方式吗

例如:

//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);?>
//在module.config.php中
“服务管理器”=>阵列(
“工厂”=>数组(
'navigation1'=>'Zend\Navigation\Service\DefaultNavigationFactory',
'navigation2'=>'Zend\Navigation\Service\DefaultNavigationFactory',
),
),
“导航”=>数组(
“导航1”=>数组(
“home”=>array('type'=>'mvc','route'=>'home','active'=>false,'label'=>'home','title'=>'home',
“页面”=>数组(
“联系人”=>数组('type'=>'mvc'、'route'=>'contact'、'active'=>false、'label'=>'contact'、'title'=>'contact'),
)
),
),
“导航2”=>数组(
“home”=>array('type'=>'mvc','route'=>'home','active'=>false,'label'=>'home','title'=>'home',
'contact'=>array('type'=>'mvc','route'=>'faq','active'=>false,'label'=>'faq','title'=>'faq'),
),
),
//丹斯劳特

我想2个不同的菜单,不同的页面,但这个方法不运行

每个人都有一个想法好吗

谢谢


Birzat

您需要为每个导航组提供一个自定义的factory类。例如,请参见ZfcAdmin如何做到这一点:

  • 创建自定义工厂类

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

  • 在工厂的
    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',
                    ),                        
                ),
            ),
        ),
    ),
    
    资料来源:


  • /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';
        }
    
    }
    
    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',
                ),
            ),
        ),
    );
    
    /config/autoload/global.php

    namespace MyNamespace\Navigation\Service;
    
    use Zend\Navigation\Service\DefaultNavigationFactory;
    
    class SecondaryNavigationFactory extends DefaultNavigationFactory {
    
        protected function getName() {
            return 'secondary';
        }
    
    }
    
    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(); ?>