5 votes

ZF2 - Navigation multiple avec navigation

Est-il possible d'avoir 2 navigations différentes ?

Par exemple :

//dans 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' => 'Accueil','title' => 'Accueil',
                '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'=>'Accueil','title'=>'Accueil',
            'contact'=>array('type'=>'mvc','route'=>'faq','active'=>false,'label'=>'Faq','title'=>'Faq'),
            ),
        ),

//Dans laout
navigation()->menu('navigation1')->setMinDepth(0);?>

navigation()->menu('navigation2')->setMinDepth(0);?>

Je voudrais avoir 2 menus différents avec des pages différentes mais cette méthode ne fonctionne pas.

Est-ce que quelqu'un a une idée s'il vous plaît ?

Merci

Birzat

6voto

Adam Lundrigan Points 598

Vous devez fournir une classe factory personnalisée pour chaque groupe de navigation. Par exemple, voyez comment ZfcAdmin fait cela :

  1. Créez une classe factory personnalisée

    `

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

    ` ``* Enregistrez AdminNavigationFactory

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

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

  • Définissez les arbres de navigation dans la configuration de votre module sous la clé que vous avez spécifiée dans la méthode getName de votre factory. Par exemple, voici comment ZfcUserAdmin s'ajoute au menu ZfcAdmin :

    'navigation' => array(
        'admin' => array(
            'zfcuseradmin' => array(
                'label' => 'Utilisateurs',
                'route' => 'zfcadmin/zfcuseradmin/list',
                'pages' => array(
                    'create' => array(
                        'label' => 'Nouvel utilisateur',
                        'route' => 'admin/create',
                    ),                        
                ),
            ),
        ),
    ),

    Source : https://github.com/Danielss89/ZfcUserAdmin/blob/master/config/module.config.php ``

4voto

automatix Points 923

/vendeur/MyNamespace/bibliothèque/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

navigation('navigation')->menu(); ?>
navigation('secondary')->menu(); ?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X