ZF2 Segment Route 在使用 children 时与 parent 的约束不匹配
ZF2 Segment Route doesn't match parent's constraint when using children
我创建了以下路线:
'relatorios' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/relatorios/:tipo',
'defaults' => array(
'controller' => 'Relatorios',
'action' => 'index',
'tipo' => 'normais',
),
'constraints' => array('tipo' => '(normais|administrativos)$',
),
'may_terminate' => true,
'child_routes' => array(
'view' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/view/:id_relatorio',
'defaults' => array('action' => 'view'),
'constraints' => array('id_relatorio' => '[0-9]+'),
),
),
),
);
这应该匹配以下路线:
/relatorios/normais//matches
/relatorios/administrativos//matches
/relatorios/normais/view/1 //doesn't match
/relatorios/administrativos/view/1 //doesn't match
所以基本上 :tipo
参数必须是 normais
或 administrativos
并且有一个 child /view/any_digits
.
当调用 parent 路由时它匹配,当调用 child 视图时它不匹配,因为我的 tipo
约束。这是为什么?
根据我的评论,约束上的 $
表示 'end of the string'(在本例中是 URL 路径),因此它不应该存在。
我创建了以下路线:
'relatorios' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/relatorios/:tipo',
'defaults' => array(
'controller' => 'Relatorios',
'action' => 'index',
'tipo' => 'normais',
),
'constraints' => array('tipo' => '(normais|administrativos)$',
),
'may_terminate' => true,
'child_routes' => array(
'view' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/view/:id_relatorio',
'defaults' => array('action' => 'view'),
'constraints' => array('id_relatorio' => '[0-9]+'),
),
),
),
);
这应该匹配以下路线:
/relatorios/normais//matches
/relatorios/administrativos//matches
/relatorios/normais/view/1 //doesn't match
/relatorios/administrativos/view/1 //doesn't match
所以基本上 :tipo
参数必须是 normais
或 administrativos
并且有一个 child /view/any_digits
.
当调用 parent 路由时它匹配,当调用 child 视图时它不匹配,因为我的 tipo
约束。这是为什么?
根据我的评论,约束上的 $
表示 'end of the string'(在本例中是 URL 路径),因此它不应该存在。