我試圖在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