1

当我尝试从管理面板创建可配置产品时,出现以下错误。

致命错误:在非对象上调用成员函数 setProductFilter()

我没有尝试任何特别的东西。我刚刚转到“添加产品”并选择“默认”属性集并从下拉列表中选择“可配置产品”并点击继续。但我无法创建可配置的产品。

它在以下行中显示错误

\app\code\core\Mage\Catalog\Model\Product\Type\Configurable.php 在第 294 行

有人可以帮我吗?

4

2 回答 2

0
If your Problem  is - magento Call to a member function setProductFilter() on a non-object in app/code/core/Mage/Catalog/Model/Product/Type/Configurable.php on line 294


Go to -
app/code/core/Mage/Catalog/Model/Resource/Product/Type/Configurable/Attribute/

And see there are the Collection.php file exist or not.
I thing there are Collection.php file exist but the file extension is not correct format.

You can change the extension only, Make it Collection.php
于 2015-03-19T06:05:16.520 回答
0

差不多 2 年过去了,我刚刚在 Magento 1.9.0.1 中遇到了同样的(嗯,非常相似的)问题。我找到了原因,这让我感到非常惊讶。

注意:我在文件路径中使用反斜杠,因为我使用的是 Windows。我看到OP也是。以防万一有人要指出我的“错误”。:o)

第 294 行的 \app\code\core\Mage\Catalog\Model\Product\Type\Configurable.php 如下所示:

return Mage::getResourceModel('catalog/product_type_configurable_attribute_collection')->setProductFilter($this->getProduct($product));

这应该做以下三件事:

  1. 使用加载产品对象$this->getProduct($product)
  2. 使用生成资源对象Mage::getResourceModel('catalog/product_type_configurable_attribute_collection')
  3. 调用该资源对象的setProductFilter方法,传入产品对象

它在第 2 步失败,因为Mage::getResourceModel('catalog/product_type_configurable_attribute_collection')尝试使用文件 \app\code\core\Mage\Catalog\Model\Resource\Product\Type\Configurable\Attribute\Collection.php,至少在我的情况下 - 没有存在。

确切地说,该文件存在,但扩展名错误 - .ph 而不是 .php。似乎 Magento CE 1.9.0.1 是这样发布的。也许其他版本也会受到同样的影响。

Magento CE 1.9.0.1 有 3 种格式:.zip、.tar.gz 和 .tar.bz2。我将 .tar.gz 版本下载到 Windows 8.1 系统上,并使用 GnuWin 的 gzip for Windows 和 tar for Windows(两个命令行实用程序)将其解压缩。可能由于我选择下载和提取的特定方式和/或由于我使用的操作系统而损坏了某些东西。或者这个文件可能只是在源头上命名错误。无论哪种方式,将其重命名为 .php 为我解决了这个问题。

希望这对某人有所帮助-因为我可以看到这是一个受欢迎的话题:oD

于 2014-11-14T16:18:07.677 回答