我遇到了一个路由中的可选约束问题,该路由在其子级中是非可选的。我的路由结构如下:
'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']
]
]
]
]
在我看来,这应该给我以下路线:
/profile
- 作品/profile/123
- 作品/profile/sessions
-不工作/profile/123/sessions
- 作品
当我在 URL 视图助手中使用路由 3 时,我收到以下错误:
$this->url('profile/sessions');
Zend\Mvc\Router\Exception\InvalidArgumentException
:缺少参数“id”
我最初有[0-9]+
作为我的约束,但将其设为可选 ( *
) 似乎没有帮助。有没有人经历过这种情况?