记录下来以备以后查看
项目目录布局如下:
/
|- application
|- configs
|- modules
|- csch
|- controllers
|- models
|- views
|- default
|- controllers
|- models
|- views
|- t
|- controllers
|- models
|- views
|- library
|- Zend
|- public
|- index.php
获取前端控制器Zend_Controller_Front类的实例
$front = Zend_Controller_Front::getInstance();
方法一:用addControllerDirectory()设置模块、控制器
$front->addControllerDirectory(APPLICATION_PATH . '/modules/csch/controllers', 'csch');
$front->addControllerDirectory(APPLICATION_PATH . '/modules/default/controllers', 'default');
$front->addControllerDirectory(APPLICATION_PATH . '/modules/t/controllers', 't');
通过多次调用addControllerDirectory()方法可以设置多个模块、控制器目录, 并且控制器目录的名称可以不同
如把模块t的控制器目录名改为controller001, 则可以按如下方法添加模块、控制器目录
$front->addControllerDirectory(APPLICATION_PATH . '/modules/t/controllers001', 't');
方法二:用setControllerDirectory()设置模块、控制器
setControllerDirectory()方法支持两个格式的参数:字符串、数组
字符串格式参数:
参数格式即为控制器目录的路径,和addControllerDirectory()方法的参数格式一样,此时setControllerDirectory()方法的内部实际上也是通过调用addControllerDirectory()方法来实现的
数组格式参数:
必须为 模块名 => 控制器目录路径 的键/值对参数
如$front->setControllerDirectory(array (
'csch' => APPLICATION_PATH . '/modules/csch/controllers',
'default' => APPLICATION_PATH . '/modules/default/controllers',
't' => APPLICATION_PATH . '/modules/t/controllers'
));
如果调用setControllerDirectory()方法设置模块、控制器时传递的参数是字符串格式,则只能设置一个控制器目录,因为每次调用setControllerDirectory()方法时,其内部都要执行一次$this->_controllerDirectory = array();来清空之前的设置
方法三:用addModuleDirectory()方法实现
$front->addModuleDirectory(APPLICATION_PATH . '/modules');
如果控制器目录名不是默认的controllers, 则需要调用setModuleControllerDirectoryName()方法设置控制器目录名
如$front->setModuleControllerDirectoryName('controllers001');
setModuleControllerDirectoryName()方法必须在addModuleDirectory()方法之前调用
通过这三种方法都可以设置ZendFrame Work的模块、控制器
方法一、方法二可以为不同的模块下的控制器目录设置不同的目录名,但是方法三不能实现