我正在创建一个应用程序,该应用程序在名为api
. 对于其他模块,我创建了一个小类,它返回一个Zend_Controller_Router_Rewrite
带有自定义路由的对象:
$router = new Zend_Controller_Router_Rewrite();
foreach ($this->_modules as $module) {
if ($module === 'api') continue;
foreach ($this->_getConfigFiles($module) as $filename) {
$config = new Zend_Config_Ini($filename, 'routes');
$router->addConfig($config, 'routes');
}
}
return $router;
对于默认模块,我有以下路线:
[routes]
routes.default_index_index.type = Zend_Controller_Router_Route
routes.default_index_index.route = /
routes.default_index_index.defaults.module = default
routes.default_index_index.defaults.controller = index
routes.default_index_index.defaults.action = index
现在,在我的Bootstrap
文件文件中,我有以下内容:
$router = Shark_Module_Loader::getInstance()->getRouter();
$frontController->setRouter($router);
$frontController->getRouter()->removeDefaultRoutes();
$apiRoute = new Zend_Rest_Route($frontController, array(), array('api'));
$router->addRoute('rest', $apiRoute);
当然,如果我跳过添加其余路线,默认模块的一切正常。但是当我添加 RESTful 路由时,路由器中定义的路由被覆盖(?),因此模块控制器()的index
操作中的当前路由是 Zend_Rest_Route 的一个实例。因此,当尝试访问在路由配置文件中定义的自定义路由时,可以说:index
default
$this->getFrontController()->getRouter()->getCurrentRoute();
...
routes.default_pages_view.type = Zend_Controller_Router_Route
routes.default_pages_view.route = /view/:page
routes.default_pages_view.defaults.module = default
routes.default_pages_view.defaults.controller = pages
routes.default_pages_view.defaults.action = view
...
我收到 404 错误,指出请求操作 ( get
) 不存在。
我已经浏览了文档,没有看到任何暗示这种行为的提示。
任何帮助和指导将不胜感激。