2016-12-07 3 views
0

В ZF3 Я хочу получить параметр по умолчанию из маршрута. Я получаю параметры таким образом в контроллере:Не получать параметр маршрута по умолчанию в ZF3

$params = $this->params()->fromRoute('crud'); 

Моего URLs выглядит следующим образом:

1: somedomain/admin/color/add 
2: somedomain/admin/color 

В 1) Я получаю add в моих $params переменных.
В 2) Я получаю null, но я ожидал по умолчанию (в данном случае view)

Я думаю, что это проблема с плохой конфигурации маршрутизатора.

'admin' => [ 
      'type' => Segment::class, 
      'options' => [ 
       'route' => '/admin/:action', 
       'defaults' => [ 
        'controller' => Controller\AdminController::class, 
        'action' => 'index', 
       ], 
      ], 
      'may_terminate' => true, 
      'child_routes' => [ 
       'color' => [ 
        'type' => Segment::class, 
        'options' => [ 
         'route' => '/:crud', 
         'constraints' => [ 
          'crud' => 'add|edit|delete|view', 
         ], 
         'defaults' => [ 
          'controller' => Controller\AdminController::class, 
          'crud' => 'view', 
         ], 
        ], 
       ], 
      ], 
      ], 

ответ

2

В вашем определении маршрута, вы не говорит маршрутизатор, что ваш параметр crud указывать необязательно. Поэтому, когда вы звоните somedomain/admin/color, это маршрут /admin/:action, который выбран.

Чтобы указать дополнительный параметр, используйте кронштейн нотации (предполагая, что вы используете один и тот же действие):

'admin' => [ 
    'type' => Segment::class, 
    'options' => [ 
     'route' => '/admin/:action[/:crud]', 
     'defaults' => [ 
      'controller' => Controller\AdminController::class, 
      'action' => 'index', 
      'crud' => 'view', 
     ], 
     'constraints' => [ 
      'crud' => 'add|edit|delete|view', 
     ], 
    ], 
], 
+0

Я сделал это уже. Но спасибо. –

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