我创build了一个适用于我的Windows XAMPP安装的模块。 然而,在Linux上进行testing似乎并不正确。 更具体地说,我的控制器似乎并没有加载。
当访问urlwww.mysite.com/modulename/standard/
我得到一个404错误。 我希望得到一个消息输出控制器中的类定义之前的die('here')
。
控制器文件是/app/code/local/Namespace/Modulename/controllers/StandardController.php
。
这个类在这个文件里面定义如下:
class Namespace_Modulename_StandardController extends Mage_Core_Controller_Front_Action
从我的XMLconfiguration文件中提取的是这里:
<frontend> <routers> <modulename> <use>standard</use> <args> <module>Namespace_Modulename</module> <frontName>modulename</frontName> </args> </modulename> </routers> <!-- other blocks here --> </frontend>
我最初的想法是,这是一个大小写敏感的问题,我没有注意到在Windows上开发。 以前的XML片段如下,这也没有工作。 另请注意,我已经尝试访问两个XML版本的www.mysite.com/Modulename/standard
和www.mysite.com/modulename/standard
,每次都有404错误。
<Modulename> <use>standard</use> <args> <module>Namespace_Modulename</module> <frontName>Modulename</frontName> </args> </Modulename>
有人知道可能是什么问题吗?
谢谢。
编辑
按照要求,这里是模块的configuration文件。 这一切似乎是正确的 – 该模块显示在pipe理员/开发人员页面和模块configuration屏幕(在system.xml中生成)出现在后端。 而且,模块的一部分(看起来是控制器)正在前端工作!
<config> <modules> <Namespace_Modulename> <active>true</active> <codePool>local</codePool> </Namespace_Modulename> </modules> </config>
编辑2
有些版本可能会有用。 PHP 5.3的Magento 1.5.1.0
试试这个代码:
<frontend> <routers> <namespace_modulename> <use>standard</use> <args> <module>Namespace_moduleename</module> <frontName>modulename</frontName> </args> </namespace_modulename> </routers> <!-- other blocks here --> </frontend>
你的控制器实际上是否被命名为StandardController.php? 在“控制器”之前的大小写敏感的文件系统部分应该从大写字母开始,所有其他字母应该小写
我不敢相信!
我的开发盒在我不知情的情况下被更新,看来,在这个过程中,我的Apache配置被改变了! 我终于意识到,我没有收到Magento通常的404错误页面,只有一个普通的,丑陋的404页面,并检查了我的Apache错误日志,说文件/moduleename/standard
不存在。 更新我的Apache配置添加以下修复的问题:
<Directory "mymagentodirectory"> AllowOverride All </Directory>
我不能相信。 感谢所有花时间阅读和回复的人! 🙂