У меня была похожая проблема, и я решил эту проблему, определив только один маршрут, подобный этому
$routeAdmin = new Zend_Controller_Router_Route(
'administrador/:controller/:action/:id/:pg',
array(
'module' => 'administrador',
'controller' => 'index',
'action' => 'index',
'id' => 0
),
array(
'id' => '\d+'
)
);
$router->addRoute('administrador', $routeAdmin);
В вашем actions
вам нужно будет получить id
и проверить его где-нибудь, где может быть id
, например, если вы были в /administrador/events/view/1
, вы можете посмотреть в таблице событий или если бы вы были в /administrador/pages/view/1
, вы бы искали страницу.
Но проблемы действительно начинаются, когда id
может быть событием или страницей в данном контроллере и действии. Единственный реальный способ обойти это - явно указать тип id
, который вы используете, например
/administrador/events/view/index/id/1
или
/administrador/pages/view/index/page/1
Если вы хотите удалить часть индекса, тогда настройте маршруты, такие как
$routeAdmin = new Zend_Controller_Router_Route(
// Remove the action from here and explicitly set the controller
'administrador/pages/:pg',
array(
'module' => 'administrador',
'controller' => 'pages',
// Then set the default action here
'action' => 'index',
'pg' => 0
),
array(
'pg' => '\d+'
)
);
$router->addRoute('administradorpages', $routeAdmin);
То, что вы просите, в основном приводит к большой работе по угадыванию и, следовательно, к риску получения неожиданных результатов.