2012-10-16 4 views
6

Build-Navigation von config:Zend Framework 2: aktive Menüpunkte

'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 konfiguriert ist, wie es wahr ist. Navigation im Menü funktioniert. Link-Menü führt zum gewünschten Controller/Aktion des gewünschten Moduls. Aber während der Einführung des Menüs und des Übergangs zu einem oder mehreren Menüpunkten, aktiv markiert beide Punkte gleichzeitig und "Administration" und "Album". Wie ich es verstehe, aus dem Grund, dass die Namen der Controller und Aktionen mit ihnen übereinstimmen, aber es ist immer noch die "Route" und es ist anders ... nicht umsonst, dass die generierte unterschiedliche URL für jeden Gegenstand ... aber irgendwie, trotz Dies sind beide als aktiv markiert.

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-Routing-Konfiguration ähnlich ...

Warum dies geschieht? Vielen Dank.

Antwort

0

Sieht so aus, als ob ZF2 funktioniert (lesen Sie isActive() Funktion in Zend \ Navigation \ Page \ Mvc.php). Anfangs prüft es den Abgleich von Route/Controller/Aktion, aber wenn es fehlschlägt, sucht ZF2 erneut nach dem Controller/Aktionspaar. So gibt es drei Möglichkeiten:

  1. Öffnen Sie ein Ticket bei https://github.com/zendframework/zf2/issues und auf Antwort warten.

  2. Übersteuern \Zend\Navigation\Page\Mvc.

  3. Wählen Sie unterschiedliche Namen für Controller (und verwenden Sie nicht den Namen index, da dies der Standardname für Controller in Mvc.php ist).

0

Wenn Sie Ihren Controller-Namen umfassen die den Namensraum machen, dann werden sie eindeutig sein und wird nicht kollidieren:

Admin\Controller\IndexController 
Album\Controller\IndexController 

Statt

Index 
Index