Mam problem z opcjonalnym ograniczeniem na trasie, która nie jest opcjonalna w jego elementach podrzędnych. Moja struktura routingu jest następujący:Opcjonalne ograniczenia trasy ZF2 na trasach podrzędnych
'profile' => [
'type' => 'segment',
'options' => [
'route' => '/profile[/:id]',
'constraints' => ['id' => '[0-9]*'],
'defaults' => [
'controller' => 'User\Controller\User',
'action' => 'profile'
]
],
'may_terminate' => true,
'child_routes' => [
'sessions' => [
'type' => 'literal',
'options' => [
'route' => '/sessions',
'defaults' => ['action' => 'sessions']
]
]
]
]
które moim zdaniem powinno dać mi następujących trasach:
/profile
- Współpracuje/profile/123
- Współpracuje/profile/sessions
- nie działa/profile/123/sessions
- działa
Gdy używam trasy 3 w widoku URL pomocnika pojawia się następujący błąd:
$this->url('profile/sessions');
Zend\Mvc\Router\Exception\InvalidArgumentException
: Missing parameter "id"
pierwotnie miał [0-9]+
jak mój przymusu, lecz czyni to opcjonalne (*
) nie wydaje się pomógł. Czy ktoś wcześniej doświadczył tej sprawy?
Skończyło się na tej trasie, ponieważ wolę jasno zdefiniować każdą trasę (nie lubię "magicznych" tras w stylu '/: controller [/: action]'). – Ross