Вы можете создать плагин и в routeStartup определить что-то, что перехватывает ваш запрос и направить /module/controller/action
на /action
, но для этого все имена ваших действий должны быть уникальными:
class My_CustomRouterPlugin extends Zend_Controller_Plugin_Abstract
{
public function routeStartup(Zend_Controller_Request_Abstract $request)
{
$fc = Zend_Controller_Front::getInstance();
$action =$fc->getRequest()->getActionName();
$router = $fc->getRouter();
$model= new myModel();
$myPage = $model->getPageByAction($action);
$route = new Zend_Controller_Router_Route('/action', array(
'module' => $myPage->getModule();
'controller' => $myPage->getController();
'action' => $action;
));
$router->addRoute($action, $route);
return $router;
}
}
В myModel определитьметод может получить вам объект (или массив), который содержит имена модулей, контроллеров (из вашей БД).
и зарегистрировать этот плагин в вашем загрузчике:
$front->registerPlugin(new My_CustomRouterPlugin());