2013-03-06 3 views
2

У меня возникают проблемы с настройкой child_routes. Они не работают, если я не разделять их, althou конечный результат должен быть таким же !:Проблемы с детской маршрутизацией ZF2

Это то, что я пытаюсь достичь:

'router' => array(
     'routes' => array(
      'app' => array(
       'type' => 'Zend\Mvc\Router\Http\Segment', 
       'options' => array(
        'route' => '[/:info]/app', 
        'defaults' => array(
         '__NAMESPACE__' => 'X\App', 
         'controller' => 'Index', 
         'action' => 'index', 
        ), 
        'may_terminate' => true, 
        'child_routes' => array(
         'example' => array(
          'type' => 'Zend\Mvc\Router\Http\Segment', 
          'options' => array(
           'route' => '/example[:/data]', 
           'defaults' => array(
            'action' => 'example', 
           ), 
          ), 
         ), 
        ), 
       ), 
      ), 
     ), 

Но это работает только таким образом:

'router' => array(
     'routes' => array(
      'app' => array(
       'type' => 'Zend\Mvc\Router\Http\Segment', 
       'options' => array(
        'route' => '[/:info]/app', 
        'defaults' => array(
         '__NAMESPACE__' => 'X\App', 
         'controller' => 'Index', 
         'action' => 'index', 
        ),      
       ), 
      ), 
      'app.example' => array(
       'type' => 'Zend\Mvc\Router\Http\Segment', 
       'options' => array(
        'route' => '[/:info]/app/example[/:data]', 
        'defaults' => array(
         '__NAMESPACE__' => 'X\App', 
         'controller' => 'Index', 
         'action' => 'example', 
        ), 
       ), 
      ), 
     ), 

.. любой знает, что я могу сделать неправильно ..?

ответ

6

ваших детей маршрутов находятся в неправильном месте, они не принадлежат внутри options массива, не делает may_terminate key, попробуйте это ...

'router' => array(
    'routes' => array(
     'app' => array(
      'type' => 'Zend\Mvc\Router\Http\Segment', 
      'options' => array(
       'route' => '[/:info]/app', 
       'defaults' => array(
        '__NAMESPACE__' => 'X\App', 
        'controller' => 'Index', 
        'action' => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'example' => array(
        'type' => 'Zend\Mvc\Router\Http\Segment', 
        'options' => array(
         'route' => '/example[:/data]', 
         'defaults' => array(
          'action' => 'example', 
         ), 
        ), 
       ), 
      ), 
     ), 
    ), 
), 
+0

бить меня это :) – Andrew

1

У вас есть свой синтаксис неправильный

в первом примере вы получили ваше определение chil_routes внутри массива параметров, то Nees быть на том же уровне, что и массив опций:

'router' => array(
    'routes' => array(
     'app' => array(
      'type' => 'Zend\Mvc\Router\Http\Segment', 
      'options' => array(
       'route' => '[/:info]/app', 
       'defaults' => array(
        '__NAMESPACE__' => 'X\App', 
        'controller' => 'Index', 
        'action' => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'example' => array(
        'type' => 'Zend\Mvc\Router\Http\Segment', 
        'options' => array(
         'route' => '/example[:/data]', 
         'defaults' => array(
          'action' => 'example', 
         ), 
        ), 
       ), 
      ), 
     ), 
    ), 
+0

Это была проблема, но возникла другая проблема: Неустранимая ошибка: исключение «Zend \ Mvc \ Router \ Exception \ RuntimeException» с сообщением «Найденное пустое имя параметра» в/home/X/zendframework/zendframework/library/Zend/Mvc/Router/Http/Segment.php: 174 Трассировка стека: # 0 /home/X/zendframework/zendframework/library/Zend/Mvc/Router/Http/Segment.php(106): Zend \ Mvc \ Router \ Http \ Segment-> parseRouteDefinition ('/ example [:/data ...') # 1/home/X/vendor/zendframework/zendframework/library/Zend/Mvc/Router/Http/Segment.php (138): Zend \ Mvc \ Router \ Http \ Segment -> __ construct ('/ example [:/data ...', Array, Array) # 2 – MGP

+4

'/ example [:/data]' vs '/ example [/: data]' может быть? – Crisp

+0

@ Crisp вы можете объяснить? я не получил его .. – MGP

Смежные вопросы