2011-04-02 139 views
1

定義所以我使用Zend Framework和我有一個名爲UrlRouter.php文件的代碼沒有默認模塊:的PHP Zend錯誤:此應用程序

class UrlRouter extends Zend_Controller_Plugin_Abstract 
{ 
    public function routeStartup($request) 
    { 
     $url = $request->getRequestUri(); 

     echo $url; 

    } 
} 

,然後我有這個在我的索引。 PHP

require_once("UrlRouter.php"); 

$front = Zend_Controller_Front::getInstance(); 
$front->registerPlugin(new UrlRouter($this->getRequest())); 
$front->dispatch(); 

但後來我得到的錯誤信息:

Fatal error: Uncaught exception 'Zend_Controller_Exception' with message 'No default module defined for this application' 

我做了什麼錯?

控制器插件似乎不過是做了工作...它印的URI正確但隨後後跟該錯誤消息

回答

0

這是因爲:

  • 請求沒有有一個模塊名稱;和
  • 沒有默認模塊集。

這意味着,查詢像一個網址:

http://path/to/your/app?module=foo 

...應該工作。或者你可以定義一個默認的模塊:

$front->setDefaultModule('foo'); 
+0

它不管是什麼「富」是?它必須是現有的模塊嗎? – 2011-04-02 18:44:33

+0

@kamikaze_pilot:當然,它應該是一個現有的模塊。但我認爲,如果你有一個模塊,它可以是任何東西,因爲如果所請求的模塊是默認的,Zend將同時查找「Foo_IndexController」和「IndexController」類。如果我沒有記錯的話。這就是說你應該總是有一個默認模塊集。 – netcoder 2011-04-02 18:45:24

+0

我的zend應用程序不完全是模塊化的,所以一切都只是默認的目錄結構(即應用程序/我們有控制器等)後...我如何指定此設置,然後...我試過$ front-> setDefaultModule('默認');似乎沒有工作 – 2011-04-02 18:55:56

0

如果你有在/應用程序直接在控制器,你需要告訴他們該控制器目錄是應用

$front->setDefaultControllerDirectory('application')