2013-10-06 67 views
2

這似乎是一個類似的問題,但沒有爲我工作。我覺得答案必須在那裏 - 這不是一個不常見的問題 - 但我沒有使用正確的搜索條件。ZF2導航:使用非默認參數激活路線?

ZF2: Active branch for child routes in zend navigation. How?

以下是我定義的路由:

'router' => array(
    'routes' => array(
     'platform' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '/platform[/:controller/:region/:id[/:action]]', 
       'constraints' => array(
        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'region' => '[0-9a-z]{2,4}', 
        'id' => '[0-9a-z-]+', 
       ), 
       'defaults' => array(
        'controller' => 'platform', 
        'action' => 'index', 
       ), 
      ), 
     ), 
    ), 
), 

這裏是我的導航:

'navigation' => array(
    'default' => array(
     array(
      'label' => 'Home', 
      'route' => 'home', 
     ), 
     array(
      'label' => 'Account', 
      'route' => 'zfcuser', 
      'pages' => array(
       array(
        'label' => 'Dashboard', 
        'route' => 'zfcuser', 
       ), 
       array(
        'label' => 'Sign In', 
        'route' => 'zfcuser/login', 
       ), 
       array(
        'label' => 'Sign Out', 
        'route' => 'zfcuser/logout', 
       ), 
       array(
        'label' => 'Register', 
        'route' => 'zfcuser/register', 
       ), 
      ), 
     ), 
     array(
      'label' => 'Platform v2 BETA', 
      'route' => 'platform', 
     ), 
    ), 
), 

我在我的佈局顯示每一個頁面上的頂級菜單像這樣:

   <div class="nav-collapse collapse"> 
        <?php echo $this->navigation('navigation') 
            ->menu() 
            ->setMinDepth(0) 
            ->setMaxDepth(0) 
            ->setUlClass('nav') 
            ->render(); ?> 
       </div> 

我的導航顯示正確,併爲家庭和zfcuser路線啓用了正確的部分。這是我遇到問題的平臺路線。如果我去/platform菜單將被激活。但是,當我瀏覽模塊中的任何其他頁面(例如,/platform/pendulum/na/af455e)時,沒有活動菜單並且沒有面包屑。問題似乎是這些其他頁面上的控制器/操作與路由指定的默認值不同。

我該如何獲得任何成功的路線匹配以使菜單激活?

回答

-3

把下面的內容中

'invokables' => array(
     'Application\Controller\Platform'  => 'Application\Controller\PlatformController') 

,並從上述替換默認這樣

'defaults' => array(
       'controller' => 'Application\Controller\Platform', 
       'action' => 'index', 
      ), 

應用是模塊名稱在我的情況

+1

這個答案沒有任何關係這個問題。 – Siwei