ZendFrame Work模块、控制器设置方法(版本1.11.5)

记录下来以备以后查看


项目目录布局如下:
/
 |- 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的模块、控制器
方法一、方法二可以为不同的模块下的控制器目录设置不同的目录名,但是方法三不能实现

你可能感兴趣的:(ZendFrame Work模块、控制器设置方法(版本1.11.5))