我创建了以下路由:
'relatorios' => array(
'type' => 'ZendMvcRouterHttpSegment',
'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' => 'ZendMvcRouterHttpSegment',
'options' => array(
'route' => '/view/:id_relatorio',
'defaults' => array('action' => 'view'),
'constraints' => array('id_relatorio' => '[0-9]+'),
),
),
),
);
应该匹配以下路由:
/relations/normais //matches
/relations/administratis //matches
/relations/normis/view/1 //doesn't match
/relationos/administratis/view/1 //doesn't match
所以基本上:tipo
参数必须是normais
或administrativos
,并且有一个子/view/any_digits
。
当父路由被调用时它匹配,当子视图被调用时它不匹配,因为我的tipo
约束。为什么呢?
根据我的评论,约束上的$
意味着'字符串的结束'(在这种情况下是URL路径),所以它不应该在那里。