Zend framework Zend Framework中特定于模块的路由,而不在路由中指定模块名称

Zend framework Zend Framework中特定于模块的路由,而不在路由中指定模块名称,zend-framework,zend-route,Zend Framework,Zend Route,我需要创建一些特定于模块的路由,但没有在路由中明确提到模块名称。现在,我为每个模块都有单独的配置文件(module/configs/module.ini),在模块引导中,我将这些路由推送到Zend Framework中。INI文件保存路由信息,但在路由中提到模块名称。e、 g routes.contents.route=“contents/(.*)” routes.contents.defaults.module=内容 routes.contents.defaults.controller=索引

我需要创建一些特定于模块的路由,但没有在路由中明确提到模块名称。现在,我为每个模块都有单独的配置文件(module/configs/module.ini),在模块引导中,我将这些路由推送到Zend Framework中。INI文件保存路由信息,但在路由中提到模块名称。e、 g

routes.contents.route=“contents/(.*)”
routes.contents.defaults.module=内容
routes.contents.defaults.controller=索引
routes.contents.defaults.action=索引
+有关路线的其他详细信息


您可以看到路由中明确提到了模块名称(“内容”)。我想要的是,在路由中,我只提到模块名之后的部分,它会自动在路由之前加上模块名。因此,如果稍后我将模块重命名为CMS,我不必将每个路由都更改为“CMS/xxxx”。

您指定的“路由”可以是任何您想要的。如果Zend Framework与之匹配,它将根据下面设置的默认值执行路由

resources.router.routes.products.regex = "somethingawesome/(.*)"
resources.router.routes.products.defaults.module = "ModuleName"
resources.router.routes.products.defaults.controller = "awesome"
resources.router.routes.products.defaults.action = "cool"
上面的“route”使用regex匹配-mysite.com/somethingawesome/where,并将其路由到模块ModuleName、controller AwesomeController.php并运行coolAction()


在这个正则表达式中可以进行很多其他匹配,但是字符串“somethingawesome”完全取决于您。这都是关于你想在URL中匹配什么以及你想将它发送到哪里。

我正在使用它,但在大多数模块中,路由都是以模块名称开始的。somethingawesome=模块名称。所以我在寻找一种方法,在“somethingawesome”后面的斜杠后面输入路由,应用程序自动在模块名(somethingawesome)前面加上前缀。假设我的模块名为realestate,我想将realestate/(*)路由到module=>realestate,controller=>index,action=>index,并使用getParam获取(*)值。我只想将/(*)添加到路由配置中,因此如果以后我将模块重命名为“commercial”,我不必更改所有路由。如果希望“/realsate”转到名为“somethingelse”的模块,则只需在“.module”配置行中更改它。为“/realstate”设置的路由正则表达式根本不需要更改。如果希望“/realstate”变为“/”并转到“somethingelse”,请更改两行。我认为如果您希望“/realstate”在配置为“/”时停止工作,您可能还需要禁用默认路由。现在我想,“/(*)”路由将拦截所有内容,而所有其他模块/路由将无法工作。只是一个提醒。