为什么覆盖此核心文件“ Magento \ Quote \ Model \ ShippingMethodManagement.php”会导致错误

时间:2019-03-04 03:06:39

标签: php magento override magento2 shipping

我编写了一个简单的模块来覆盖此核心Model类,但在前端它显示此错误消息:

  

“致命错误:未被捕获的TypeError:参数3传递给   Magento \ Quote \ Model \ Quote \ ShippingAssignment \ ShippingProcessor :: __ construct()   必须是Magento \ Quote \ Model \ ShippingMethodManagement的实例,   shipping \ module \ Model \ ShippingMethodManagement \ Interceptor的实例   .....“

这里是我的“ di.xml”文件内容:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Quote\Model\ShippingMethodManagement" type="shipping\module\Model\ShippingMethodManagement" />
</config>

3 个答案:

答案 0 :(得分:0)

您需要执行以下操作:-

php bin/magento s:up

并清除缓存

答案 1 :(得分:0)

使用文件的核心路径扩展您的课程,如下所示。

在** shipping \ module \ Model **

class ShippingMethodManagement extends 
Magento\Quote\Model\ShippingMethodManagement
{
   //You can write your custom functionality here
}

不要忘记在更改后运行以下命令。

chmod -R 777 var generated
php bin/magento setup:di:compile
php bin/magento cache:flush

答案 2 :(得分:0)

在构造函数中添加了新的Argument之后,需要重新创建解释器,因此请运行di:compile命令

php bin/magento setup:di:compile