Tengo un problema con una restricción opcional en una ruta que no es opcional en sus hijos. Mi estructura de enrutamiento es el siguiente:ZF2 restricciones de ruta opcionales en rutas secundarias
'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']
]
]
]
]
que en mi opinión debería darme las siguientes rutas:
/profile
- Funciona/profile/123
- Funciona/profile/sessions
- no funciona/profile/123/sessions
- works
Cuando uso la ruta 3 en la vista URL ayudante me sale el siguiente error:
$this->url('profile/sessions');
Zend\Mvc\Router\Exception\InvalidArgumentException
: Missing parameter "id"
Al principio tuve [0-9]+
como mi fuerza, sino por lo que es opcional (*
) no parece haber ayudado. ¿Alguien ha experimentado este caso antes?
Terminé tomando esta ruta porque prefiero definir claramente cada ruta (no me gustan las rutas de estilo 'mágico' '/: controlador [/: acción]'). – Ross