У меня есть два модуля Admin и Application. В приложении модуля у меня есть следующий маршрут в моем module.config.php:
'admin' => array( 'type' => 'Segment', 'options' => array( 'route' => '/admin[/:controller[/:action]]', 'constraints' => array( 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', ), 'defaults' => array ( '__NAMESPACE__' => 'Admin\Controller', 'module' => 'Admin', 'controller' => 'Index', 'action' => 'index', ), ), 'may_terminate' => true, 'child_routes' => array( 'wildcard' => array( 'type' => 'Wildcard' ) ) ),
Проблема в том, что это совпадение
example.com/admin
и не соответствует
example.com/admin/
Как это исправить?
Вставьте [/]
чтобы исправить это. пытаться:
'route' => '/admin[/:controller[/:action]][/]',
Вы можете добавить необязательный дочерний маршрут, который соответствует только значению /. Это также должно работать для одной и той же проблемы с подстановочным (суб) маршрутом.
'admin' => array( 'type' => 'Segment', 'options' => array( 'route' => '/admin[/:controller[/:action]]', 'constraints' => array( 'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', ), 'defaults' => array ( '__NAMESPACE__' => 'Admin\Controller', 'module' => 'Admin', 'controller' => 'Index', 'action' => 'index', ), ), 'may_terminate' => true, 'child_routes' => array( 'wildcard' => array( 'type' => 'Wildcard' 'may_terminate' => true, 'child_routes' => array( 'ts' => array( 'type' => 'literal', 'options' => array('route' => '/' ) ), ) ), 'ts' => array( 'type' => 'literal', 'options' => array('route' => '/') ), ) ),