У меня на самом деле есть 2 модуля (приложение и админ) в моем приложении ZF2, и я хочу маршрутизацию URL, как в ZF1. Я в настоящее время имеют следующий маршрут:ZF2 - Попытка создать маршрут, подобный ZF1
'router' => array
(
'routes' => array
(
'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',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array
(
'wildcard' => array
(
'type' => 'Wildcard'
)
)
),
),
),
Так что будет соответствовать «/ администратор», «/ администратор/контроллер», «/ администратор/контроллер/действие», но не «/ контроллер/действие».
Теперь мне нужен маршрут к модулю приложения. Проблема в том, что если я просто использую такой маршрут для модуля Application, этот новый маршрут будет соответствовать «/ admin/controller» как controller = «admin» и action = «controller».
Я также попытался следующее регулярное выражение маршрута в приложении:
'application' => array
(
'type' => 'Regex',
'options' => array
(
'regex' => '/(?<controller>^(?!(admin)$)[a-zA-Z][a-zA-Z0-9_-]*)?' .
'(/[a-zA-Z][a-zA-Z0-9_-]*)?',
'spec' => '/%controller%/%action%',
/*'constraints' => array
(
//The controller cannot be "admin"
'controller' => '^(?!(admin)$)[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
),*/
'defaults' => array
(
'__NAMESPACE__' => 'Application\Controller',
'controller' => 'Index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array
(
'wildcard' => array
(
'type' => 'Wildcard'
)
)
),
Но это не получает переменные «контроллер» и «действия».
Есть ли у кого-нибудь предложение, как это решить?