Zend 项目有多个模块,每个模块都在其中定义了自己的 routes.ini。并且每个 routes.ini 文件都使用基于模块的引导文件中的以下脚本加载。
protected function _initRoutes() {
$frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$routerDir = realpath(dirname(__FILE__)). "/configs/routes/moduleRoutes.ini";
$config = new Zend_Config_Ini($routerDir,'production');
$router->addConfig($config,'routes');
}
并且所有路线都在无序加载。因为路由是按照加载顺序的相反顺序检查的,它首先检查/执行那些应该稍后检查/执行的路由。
有没有一种方法可以在每个模块的 routes.ini 文件中为每个路由添加一个 orderBy 位(1,2,3,4 ...),并按特定顺序加载它们,以便它按顺序检查路由 I定义。
模块的典型 routes.ini 文件如下所示。
routes.frontindex.type = "Zend_Controller_Router_Route_Regex"
routes.frontindex.route = "/?(?!login/)([a-zA-Z0-9_-]+)?/?([a-zA-Z0-9_-]+)?/?([0-9_-]+)?"
routes.frontindex.defaults.module = mymodule1
routes.frontindex.defaults.controller = mycontroller1
routes.frontindex.map.page = 1
routes.siteimage.type = "Zend_Controller_Router_Route_Regex"
routes.siteimage.route = "siteimage/?([a-zA-Z0-9_-]+)?/?(jpg|png|gif)?"
routes.siteimage.defaults.module = mymodule1
routes.siteimage.defaults.controller = mycontroller2
routes.siteimage.defaults.action = getimage
routes.siteimage.map.imageid = 1
routes.sitemapseo.type = "Zend_Controller_Router_Route_Static"
routes.sitemapseo.route = "sitemap.xml"
routes.sitemapseo.defaults.module = mymodule1
routes.sitemapseo.defaults.controller = mycontroller3
routes.sitemapseo.defaults.action = sitemap