0
我正在創建一個應用程序,該模塊在名爲api
的模塊中公開RESTful API。對於其它模塊我創建了一個小的類,返回一個Zend_Controller_Router_Rewrite
對象,具有自定義的路線:Zend Framework - 添加Zend_Rest_Route時覆蓋的自定義定義路線
$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路由時,路由器中定義的路由將被覆蓋(?),因此default
模塊的index
控制器的index
操作中的當前路由是Zend_Rest_Route的一個實例。因此,試圖訪問路由配置文件的定義在自定義的路由時,可以說:
...
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
)不存在。
我已經通過了文檔,並沒有看到任何暗示這種行爲的提示。
任何幫助和指導,將不勝感激。
這是一個很好的辦法。我可以在ini文件中設置自定義類型的路由。這或多或少是路線在軌道中定義的方式,對吧? –
是的,那就需要你爲它添加'getInstance()'方法。這是Zend_Application用來實例化路由並使用.ini配置它們的。我不經常使用.ini,因爲它會很大:P。 – Mauro