2012-10-16 17 views
6

Corporatura navigazione da config:Zend Framework 2: voci di menu attiva

'navigation' => array(
    'default' => array(
     'admin' => array(
       'label' => 'Administration', 
       'controller' => 'index', 
       'action' => 'index', 
       'route' => 'admin/default', 
      ), 
     'album' => array(
       'label' => 'Album', 
       'controller' => 'index', 
       'action' => 'index', 
       'route' => 'album/default', 
      ), 
    /* ... */ 

routing è configurato come è vero. La navigazione nel menu funziona. Il menu Collegamenti porta al controller/azione desiderato del modulo desiderato. Ma mentre introducevo menu e una transizione a uno o un altro menu, attivo contrassegnato entrambi i punti contemporaneamente e "Amministrazione" e "Album". A quanto ho capito, per il motivo che corrispondono ai nomi dei controller e delle azioni con loro, ma c'è ancora il 'percorso' ed è diverso ... non per niente che l'url generato per ogni oggetto ... ma in qualche modo, nonostante questo, sono entrambi contrassegnati come attivi.

Routing config:

'router' => array(
    'routes' => array(
     'admin' => array(
      'type' => 'Literal', 
      'options' => array(
       'route' => '/admin', 
       'defaults' => array(
        '__NAMESPACE__' => 'Admin\Controller', 
        'controller' => 'Index', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'default' => array(
        'type' => 'Segment', 
        'options' => array(
         'route' => '/[:controller][/:action[/id:id]]', 
         'constraints' => array(
          'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
          'id'   => '[0-9]+', 
         ), 
         'defaults' => array(
         ), 
        ), 
       ), 

Album di configurazione di routing simile ...

perché questo sta accadendo? Grazie.

risposta

0

Sembra che ZF2 funzioni (leggi la funzione isActive() in Zend \ Navigation \ Page \ Mvc.php). Inizialmente controlla la corrispondenza di route/controller/action, ma se fallisce, ZF2 controlla nuovamente solo la coppia controller/action. Quindi ci sono tre possibili modi:

  1. aprire un ticket a https://github.com/zendframework/zf2/issues e attendere la risposta.

  2. Override \Zend\Navigation\Page\Mvc.

  3. Scegliere nomi diversi per i controller (e non utilizzare il nome index perché è il nome predefinito per il controller in Mvc.php).

0

Se fate i vostri nomi di controller includono il namespace allora saranno unici e non si scontreranno:

Admin\Controller\IndexController 
Album\Controller\IndexController 

Piuttosto che

Index 
Index