【问题标题】:Magento 2 class not found error when overriding Magento_GroupedProduct model覆盖 Magento_GroupedProduct 模型时未找到 Magento 2 类错误
【发布时间】:2018-06-14 16:39:14
【问题描述】:

我在 Magento 2.2.2 中创建了一个自定义模块,它扩展了 \Magento\GroupedProduct\Model\Product\Type\Grouped 类。

该模块已成功安装并在网站上启用,但是,我收到一个 PHP 致命错误:未捕获的错误:在 ../vendor/magento/framework/ObjectManager 中找不到类“ExtraMile\Catalog\Model\Grouped” /Factory/AbstractFactory.php:111.

我的模块文件夹结构如下:

模块文件夹结构图

di.xml 文件包含:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'ExtraMile_GroupedProduct',
__DIR__
);

module.xml 文件包含:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
  <module name="ExtraMile_GroupedProduct" setup_version="1.0.2">
    <sequence>
        <module name="Magento_GroupedProduct"/>
    </sequence>
  </module>
</config>

Grouped.php 文件包含:

<?php
namespace ExtraMile\GroupedProduct\Model;

class Grouped extends \Magento\GroupedProduct\Model\Product\Type\Grouped
{
  public function getAssociatedProducts($product)
  {
    if (!$product->hasData($this->_keyAssociatedProducts)) {
        $associatedProducts = [];

        $this->setSaleableStatus($product);

        $collection = $this->getAssociatedProductCollection(
            $product
        )->addAttributeToSelect(
            ['name', 'price', 'special_price', 'special_from_date', 'special_to_date', 'tax_class_id']
        )->addFilterByRequiredOptions()->setPositionOrder()->addStoreFilter(
            $this->getStoreFilter($product)
        )->addAttributeToFilter(
            'status',
            ['in' => $this->getStatusFilters($product)]
        );

        foreach ($collection as $item) {
            $associatedProducts[] = $item;
        }

        $product->setData($this->_keyAssociatedProducts, $associatedProducts);
    }
    return $product->getData($this->_keyAssociatedProducts);
  }
}

bin/magento setup:di:compile 已运行多次。

我遵循了许多教程,例如:http://inchoo.net/magento-2/overriding-classes-magento-2/,但我不明白为什么会出现错误。请问哪位大神能指点一下是什么问题?

【问题讨论】:

  • 它已经将Catalog 插入到您的命名空间中。这可能是di 配置错误......为什么你在那个文件中有PHP,或者你的问题是一个错误?它应该是 XML,不是吗?并且应该指定模型的映射/加载以替代核心模型。
  • 抱歉,我复制了registration.php的代码而不是di.xml。

标签: php class overriding magento2 extend


【解决方案1】:

问题已解决:

我通过将模块文件夹从 app/design/frontend/&lt;vendor&gt;/&lt;module&gt; 移动到 code/&lt;vendor&gt;/&lt;module&gt; 来解决此问题。

运行bin/magento setup:di:compile 然后删除类未找到错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2013-01-07
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多