2017-08-26 6 views
1

私はzf2を使用しており、このような子ルートを定義しています。Zf2の子ルートがもう1つの子を持つときには機能しません。

'routes' => array(
      'test' => array(
       'type' => 'Literal', 
       'options' => array(
        'route' => '/test', 
        'defaults' => array(
         '__NAMESPACE__' => 'Test\Controller', 
         'controller' => 'Test', 
         'action'  => 'index', 
        ), 
       ), 
       'may_terminate' => true, 
       'child_routes' => array(
        'testABC' => array(
          'type' => 'Literal', 
          'options' => array(
            'route' => '/abc', 
            'defaults' => array(
              'action'  => 'abc', 
            ), 
          ), 
          'child_routes' => array(
            'testABCDEF' => array(
              'type' => 'Segment', 
              'options' => array(
                'route' => '/def/:id', 
                'defaults' => array(
                  'action'  => 'def', 
                ), 
              ), 
            ), 
            'testABCXYZ' => array(
              'type' => 'Segment', 
              'options' => array(
                'route' => '/xyz/:id', 
                'defaults' => array(
                  'action'  => 'xyz', 
                ), 
              ), 
            ), 
          ), 
        ), 
       ), 
      ), 
     ), 

このルートでは、1つのルートが機能しないため、なぜかわかりません。

  • はlocalhost /テストワーキング
  • はlocalhost /テスト/ ABC 動作していない
  • はlocalhost /テスト/ ABC/DEF/1 ワーキング
  • はlocalhost /テスト/ ABC/XYZ/1 作業中

答えて

3

この問題は、 testABCルートにはmay_terminateオプションがありません。それは子供がなかった場合は

は、それが暗黙のうちに終了するだろうが、それは子供を持っているので、明示的に可能性のルータに通知しなければならない(あなたが親testルートで行ったよう。)

'testABC' => array(
    'type' => 'Literal', 
    'options' => array(
     'route' => '/abc', 
     'defaults' => array(
      'action'  => 'abc', 
     ), 
    ), 
    'may_terminate' => true, // inform the router 
    'child_routes' => (
     // ... 
    ), 
), 
+0

感謝たくさん...今は働いています...今、私は何が 'may_terminate'の使用であるか知るようになりました。 – user3542450

関連する問題