我正在开始使用Zend Framework构建一个相对较大的站点。我正在考虑使用模块,每个模块控制器文件夹中的文件夹用于组织应用程序控制器。
我的问题是,对于每个请求都需要定义路由的应用程序,创建、管理和维护路由的最佳方式是什么?
据我所知,选项是:
- 在application.ini中包括所有路由定义
- 在引导程序中包括所有路由定义.php _initRoutes方法
- 从bootstrap.php自动加载一个资源,该资源编译并添加单独存储的routes.xml文件中的路由
该应用程序将包括一个核心"站点",该站点由单独的模块扩展,本质上提供多站点应用程序。
这是我提出的应用程序结构的一个例子:
|Project
|-Application
|-api
|-configs
|-controllers
|-models
|-modules
|-core
|-controllers
|-Products
|-blueController.php
|-redController.php
|-greenController
|-Services
|-indoorController.php
|-outdoorController.php
|-models
|-views
|-Bootstrap.php
|-site1
|-site2
|-site3
|-views
|-Bootstrap.php
|-Docs
|-Library
|-Public
|-.zfproject.xml
本着模块化的精神,我认为每个模块最好对其引导文件中自己的路由信息负责。
protected function _initRoutes()
{
$routes = array(
....
);
$router = Zend_Controller_Front::getInstance()->getRouter();
$router->addConfig(new Zend_Config($routes), 'mymodulename');
return $router;
}