2012-02-29 96 views
4

我正在編寫一個Zend應用程序。Zend網址和模塊名稱區分大小寫

我正在使用zend命令行工具。我創建了幾個模塊DefaultUser並標記爲Default作爲應用程序配置文件中的默認控制器。我也爲這兩個模塊創建了各自的索引控制器/操作。

當我瀏覽網站的根目錄時,一切都很好。但是,當我瀏覽$site_root$/user,而不是得到索引控制器的東西,我得到的錯誤。

Notice: Undefined index: user in E:\xampp\php\PEAR\Zend\Controller\Dispatcher\Standard.php on line 384 

Message: Invalid controller specified (index) 
Stack trace: 

#0 E:\xampp\php\PEAR\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) 
#1 E:\xampp\php\PEAR\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch() 
#2 E:\xampp\php\PEAR\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run() 
#3 E:\xampp\htdocs\$project$\public\index.php(26): Zend_Application->run() 
#4 {main} 

Request Parameters: 

array (
    'module' => 'user', 
    'controller' => 'index', 
    'action' => 'index', 
) 

但是,當我瀏覽$site_root$/User,一切都OK了。顯然URL必須區分大小寫以反映模塊名稱。我想到了一些解決方法,比如重寫Zend Request類。但在URL中使用小寫模塊名稱的最佳做法是什麼?

編輯1:文件夾結構:

enter image description here

+0

可以顯示文件樹或你如何創建的模塊和控制器和配置也 – Vytautas 2012-02-29 07:37:46

+0

當然,問題也許編輯將是有益的。 – Salman 2012-02-29 07:41:56

+0

只需將您的模塊目錄中的'User'文件夾名稱更改爲'user'即可。 – 2012-02-29 09:04:04

回答

0

檢查文件Zend \ Controller \ Request \ Abstract.php中的Zend類Zend_Controller_Request_Abstract。如果您在ZF應用多個模塊,你必須添加一個ucfirst()

public function getModuleName() 
{ 
    if (null === $this->_module) { 
     $this->_module = $this->getParam($this->getModuleKey()); 
    } 

    return ucfirst($this->_module); 
} 
2

也許問題是,你設置默認模塊"Default"沒有"default"? 你的文件夾名稱也應該小寫,但我從來沒有使用命令行,所以也許我錯了。 將所有模塊文件夾重命名爲小寫。

1

根據操作系統和服務器可能有一些案件要求。

例如Windows vs linux路徑。在Linux磁盤上路徑區分大小寫,像Apahe路徑結構這樣的服務器基於磁盤路徑。從磁盤進行基本I/O操作所涉及的任何操作都需要嚴格「文件」名稱。

此外,對於URLS這取決於服務器實現和可能的插件。例如,Apache Http通常區分大小寫,但您可以啓用mod_spelling(http://httpd.apache.org/docs/2.2/mod/mod_speling.html),以在作品中進行正確拼寫。

在您的文件/類/方法/ ...名稱中始終保持嚴格。還建議在代碼和結構中應用模式(自己或否)以提高效率。

+0

在這種情況下,我可以在應用程序代碼(不是Zend庫)中做出任何更改,以確保應用程序在任何系統中運行,並且不會遇到區分大小寫的任何問題?這正是我正在尋找的。 – Salman 2013-11-21 10:38:35