2012-02-29 36 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