Php 暂存服务器上非对象上的Mage::getModel()-getCollection()
我为Magento创建了一个自定义横幅模块,并在运行precise32实例的Vagrant/VirtualBox安装程序上对其进行了本地测试,一切正常 当我将代码从GitHub拉到临时服务器上时,扩展无法工作,我得到以下错误: PHP致命错误:在第7行的/var/colorbox/app/code/local/AffinityCloud/ACBanners/Block/Slider.PHP中的非对象上调用成员函数getCollection(),参考: 这是在查看主页时发生的,因此我不确定为什么它会引用为referer,因为这是一个类别页面 我已清除缓存(已禁用)并重新编制索引。仍然没有快乐。我还尝试使用小写字符和第一个大写字符重命名模型类,但没有结果 我已经在下面的GitHub中添加了模块代码,因此您可以看到代码: 你知道为什么这会在本地工作而不是在登台服务器上吗?这就好像它找不到模型类,但对Slider.php类的定义没有问题一样 我不知道在这里该做什么Php 暂存服务器上非对象上的Mage::getModel()-getCollection(),php,magento,module,Php,Magento,Module,我为Magento创建了一个自定义横幅模块,并在运行precise32实例的Vagrant/VirtualBox安装程序上对其进行了本地测试,一切正常 当我将代码从GitHub拉到临时服务器上时,扩展无法工作,我得到以下错误: PHP致命错误:在第7行的/var/colorbox/app/code/local/AffinityCloud/ACBanners/Block/Slider.PHP中的非对象上调用成员函数getCollection(),参考: 这是在查看主页时发生的,因此我不确定为什么它
注意:为简洁起见,我想补充一点,我已注销并重新登录到管理员,同时删除了模块表和core_资源中的引用,但没有任何效果。它可以很好地创建表,但我仍然遇到相同的问题,并且模块在高级配置中显示为已启用。问题是区分大小写。
在windows系统上,文件名不区分大小写。在Unix上,它们区分大小写 因此,在调用
Mage::getModel('acbanners/acbanners')
时,magento自动加载程序会按照您配置模块和命名文件的方式查找文件
affinitcycloud/ACBanners/Model/ACBanners.php
但是您的文件的真实名称是affinitcycloud/ACBanners/Model/ACBanners.php
因此,找不到文件,也没有加载类,Mage::getModel(…)
返回null
你有两个选择
Model
文件夹中的所有类,以大写字母开头,其余应为小写<在上面的例子中,code>acbanner.php。您可能需要对块
和助手
中的文件执行相同的操作Mage::getModel('acbanners/acbanners')
更改为Mage::getModel('acbanners/acbanners')
或Mage::getModel('acbanners/acbanners')
。但我想这需要很多重构。对于块和辅助对象,您也可能需要此功能您能发布模块的
config.xml
文件和给出错误的行吗?Aaa…没关系。。。我看不懂…我可以从github获取模块。嘿,所有的代码都在问题中的github URL上。给出错误的行是$bannersCollection=Mage::getModel('acbanners/acbanners')->getCollection();php中的第7行。我认为它可能区分大小写。不过,我不是在Windows机器上开发,而是在Mac上使用Vagrant/VirtualBox进行开发,它是登台服务器的副本。那么这真的应该发生吗。还有,为什么它可以找到其他类而不是模型类。哦,是的,Mac也是这样。尝试重命名我建议的类,看看错误是否消失或更改。谢谢你,伙计。好的,这已经修复了前端错误,但是管理员在试图管理横幅时仍然会转到404。@Gaz。我想您也必须重命名控制器文件。从Adminhtml/ACBannersController.php
到Adminhtml/ACBannersController.php
马吕斯是对的,我也遇到过这样的错误,只有保留首字母大写才能避免问题。