2013-01-24 57 views
3

我有此作爲Zend框架2的路由配置:ZF2:Zend導航中子路線的活動分支。怎麼樣?

'news' => array(
    'type' => 'Literal', 
    'options' => array(
     'route' => '/news', 
     'defaults' => array(
      '__NAMESPACE__' => __NAMESPACE__ . '\Controller', 
      'controller' => 'News', 
      'action' => 'index', 
      'page' => 1, 
     ), 
    ), 
    'may_terminate' => true, 
    'child_routes' => array(
     'index' => array(
      'type' => 'Segment', 
      'options' => array(
       'route' => '[/:page]', 
       'constraints' => array(
        'page' => '\d+', 
       ), 
       'defaults' => array(
        '__NAMESPACE__' => __NAMESPACE__ . '\Controller', 
        'controller' => 'News', 
        'action' => 'index', 
        'page' => 1, 
       ), 
      ), 
     ), 
    ), 
), 

我也有一個導航其中元素指向路由名稱news

當我在/news頁面上時,一切都很好,新聞導航元素處於活動狀態。但是當我在/news/2上時,與路線news/index相匹配,導航元素未處於活動狀態。

我該如何告訴它對於它綁定的路由的每條子路由都是主動的?

+0

試想想,它是沒有考慮到這樣的情況下做得正確,因爲Zend公司導航無法知道每個項目的路線的單獨結構。一個可行的解決方案是將子頁面添加到每個子頁面的導航中,並將其填入虛擬值,然後隱藏它(僅顯示第一層),我相信這會讓父母從一的子女將符合要求。但是,這是一個骯髒的解決方案,你不覺得嗎? –

回答

2

您是否在您的導航設置中設置了控制器和操作?如果你設置這些應該不管哪個頁面設置,因爲動作/控制器匹配匹配消息的路由:

'pages' => array(
    array(
     'label'  => 'News', 
     'route'  => 'news', 
     'controller' => 'news', 
     'action'  => 'index', 
    ), 
) 
相關問題