我试图在URL来完成多层次的旧应用程序,并避免使用大量的网址roules。 所以我想到了将控制器分组到子目录并为其定义一个url roule。
对于结构
modules
--test
--controllers
--sub
-- OtherController.php
--DefaultController.php
在我添加的模块的bootstrap.php:
public function __construct($application)
{
parent::__construct($application);
$frontController = Zend_Controller_Front::getInstance();
$frontController->addControllerDirectory(__DIR__ . '/controllers',
'test');
$frontController->addControllerDirectory(__DIR__ . '/controllers/sub',
'test_sub');
}
DefaultController.php是
class Test_DefaultController extends Zend_Controller_Action {
public function subAction()
{
$level1 = $this->getRequest()->getParam('level1');
$level2 = $this->getRequest()->getParam('level2');
return $this->_forward($level2, $level1, 'test_sub');
}
因此,这将转发给我们的控制器在子目录中。与请求测试/默认/子/其它/指数
new Zend_Controller_Router_Route_Regex('([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)/([a-z-]+)',
array(),
array(1 => 'module', 2 => 'controller', 3 => 'action', 4 => 'level1', 5 => 'level2'),
'%s/%s/%s/%s/%s'
)
现在,你可以调用的indexAction在OtherController.php
因为每个控制器可以有它自己:
最后,增加了航线意见,我认为最好使用多个模块。 api_contents模块,api_users模块。 我想现在去找到如何将子模块放在模块中! – Alexar 2010-03-08 15:22:39
转到[http:// stackoverflow。COM /问题/ 592299/Zend的框架-1-7-5-如何到变化控制器目录] [1] [1]:http://stackoverflow.com/questions/592299/zend-framework-1-7-5-how-to-change-controller-directory – 2011-10-14 08:10:17