Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 暂存服务器上非对象上的Mage::getModel()-getCollection()_Php_Magento_Module - Fatal编程技术网

Php 暂存服务器上非对象上的Mage::getModel()-getCollection()

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(),参考: 这是在查看主页时发生的,因此我不确定为什么它

我为Magento创建了一个自定义横幅模块,并在运行precise32实例的Vagrant/VirtualBox安装程序上对其进行了本地测试,一切正常

当我将代码从GitHub拉到临时服务器上时,扩展无法工作,我得到以下错误:

PHP致命错误:在第7行的/var/colorbox/app/code/local/AffinityCloud/ACBanners/Block/Slider.PHP中的非对象上调用成员函数getCollection(),参考:

这是在查看主页时发生的,因此我不确定为什么它会引用为referer,因为这是一个类别页面

我已清除缓存(已禁用)并重新编制索引。仍然没有快乐。我还尝试使用小写字符和第一个大写字符重命名模型类,但没有结果

我已经在下面的GitHub中添加了模块代码,因此您可以看到代码:

你知道为什么这会在本地工作而不是在登台服务器上吗?这就好像它找不到模型类,但对Slider.php类的定义没有问题一样

我不知道在这里该做什么


注意:为简洁起见,我想补充一点,我已注销并重新登录到管理员,同时删除了模块表和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
    马吕斯是对的,我也遇到过这样的错误,只有保留首字母大写才能避免问题。