2012-12-17 131 views
0

我正在使用Zend框架中的多模塊CMS。我想創建一個結構是這樣的:zend框架中的模塊配置

testsite/ 
index.php 
library/ 
    zend/ 
    test/ 
application/ 
    configs/ 
     application.ini 
    modules/ 
     users/ 
      controllers/ 
      models/ 
     .... 
    frontend/ 
     controllers/ 
     models/ 
     .... 
    backend/ 
     controllers/ 
     models/ 
     ... 
    bootstrap.php 

我已經創建了下面的代碼:

//in application.ini 
resources.frontController.defaultModule = "frontend" 
resources.frontController.defaultControllerName = "index" 
resources.frontController.defaultAction = "index" 
resources.frontController.plugins.init = "Test_Controller_Plugin_Initializer" 

//in bootstrap.php 
protected function _initControllers() 
{ 
    $this->bootstrap('frontController'); 
    $this->_front = $this->getResource('frontController'); 

    $this->_front->addControllerDirectory(APPLICATION_PATH . '/backend/controllers', 'backend'); 
    $this->_front->addControllerDirectory(APPLICATION_PATH . '/frontend/controllers', 'frontend'); 
} 

//in Test/controllers/plugin/initializer.php 
public function preDispatch(Zend_Controller_Request_Abstract $request) 
{   
    $front = Zend_Controller_Front::getInstance(); 
    $request = $front->getRequest(); 

    $request->setModuleName('frontend'); 
    $request->setControllerName('index'); 
    $request->setActionName('index'); 
} 

當我去我的基本URL .../testsite它不工作。你能讓我知道我哪裏出錯了嗎?

+0

展示一下你在我的.htaccess在.htaccess文件 – emaillenin

+0

,我有這樣的代碼中:RewriteEngine On 的RewriteCond%{} REQUEST_FILENAME -s [OR] 的RewriteCond%{} REQUEST_FILENAME -l [OR] 的RewriteCond% {REQUEST_FILENAME} -d RewriteRule ^。* $ - [NC,L] RewriteRule ^。* $ index.php [NC,L] – user1910548

+0

看起來您有安全問題。在'/ testsite /'目錄下的Index.php,它使你的應用程序中的所有東西都可以被使用。不是一個好主意。你至少應該實現一個public或html目錄,並將你的應用程序放在你的docroot之外。 – RockyFord

回答

0

你有沒有嘗試把你的模塊在模塊目錄? 即:

testsite/ 
index.php 
library/ 
    zend/ 
    test/ 
application/ 
    configs/ 
     application.ini 
    modules/ 
     users/ 
      controllers/ 
      models/ 
     .... 
     frontend/ 
      controllers/ 
      models/ 
      .... 
     backend/ 
      controllers/ 
      models/ 
      ... 
    bootstrap.php 

WICH通常是其中ZF希望找到它的模塊。你可能需要調整你的rapplication.ini設置來反映這一點。

+0

我知道這個典型的配置。但我想做一些不同的事情。 – user1910548

0

爲了使這項工作你想怎麼它來指Zend_Application_Resource_Frontcontroller

具體你需要通過「模塊」 =>「控制器」目錄對以resources.frontController.controllerDirectory的數組。

controllerDirectory:是一個字符串值指定單個 控制器目錄或模塊的陣列,以控制目錄 對。

我懷疑這會解決所有的問題,但它應該讓你在正確的方向。