我正在努力解决一个我无法找到解释的问题。我有两个用于项目的开发环境。我为Magento创建了一个简单的模块,我在一个环境中测试了它。克服了Magento的所有复杂功能后,该模块按预期工作。这是在XAMPP上。
然后我将模块复制到托管服务器上的开发Linux环境中,它崩溃了。我做了一些调试,我发现对Mage :: getModel()的调用返回 bool(false)而不是我请求的Model的实例。
我仔细检查了所有文件和目录,然后匹配。数据库不涉及(不是来自我自己,至少,我不需要表),并且这两个环境都只有我作为用户,具有管理员权限。
欢迎任何关于我应该从哪里开始寻找的建议,谢谢。
于2012/07/09添加
Model包含一个名为Diego_ClientCustomModule_Model_ExternalUserData
的类,该类使用$model = Mage::getModel('clientcustommodule/externaluserdata');
调用。模型文件位于Diego_ClientCustomModule\code\local\Diego\ClientCustomModule\Model\
。奇怪的是:
Externaluserdata.php
,则可以正常工作。ExternalUserData.php
(即它与类名匹配),则不起作用。我知道区分大小写的东西等等,但是,如果别名都是小写的,那么为什么它可以加载首字母大写的文件?
配置文件 0.1.0 Diego_ClientCustomModule_Helper Diego_ClientCustomModule_Model Diego_ClientCustomModule_Block 标准 Diego_ClientCustomModule ClientCustomModule
答案 0 :(得分:5)
了解您寻求帮助的框架可能不是获得帮助的最佳策略。
您的问题可能是缓存(删除要检查的var / cache文件夹)或其中一个不正确的大小写。请注意,自动加载器加载的文件的每个目录和文件名的第一个字母(块,模型和帮助程序)。
答案 1 :(得分:3)
我似乎找到了问题的根本原因,虽然我无法弄清楚实现了什么样的逻辑来实现它。
模型的文件名是 UserCustomModule.php ,它反映了类名 UserCustomModule 。这是有道理的,并且在XAMPP中表现非常出色。一旦我在Linux机器上安装了相同的模块,Magento就会默默地忽略该文件,并且如前所述,没有办法追踪Magento的行为。
按照benmark的建议,我再次浏览了所有文件以检查外壳,一切似乎都匹配。然后我做了一些东西,在我看来,完全是愚蠢的,我将模型文件重命名为 Usercustommodule.php ,保持类名不变(毕竟,PHP应该表现为在两个平台上都是一样的,与文件系统不同)。神奇的是,该模块现在可以工作!文件名看起来像cr * p,但它可以工作。
这解决了这个问题,但却提出了更多问题:
再次感谢您的帮助。