debug.log中的错误消息:
〔2020-11-10 07:57:17〕main。关键:创建对象时发生类型错误:Magento\SalesRule\Model\ResourceModel\Rule,传递给Magento\ SalesRule\Model\ ResourceModel\Rule::__construct((的参数3必须是Magento\SalesRule\Model\ResourceModel\Cupon的实例,给定RM\SameUponMultipleDiscounts\Model\ResourceModel \Cupon实例,在第116行的/home/rehan/lab/testrm/vender/magento/framework/ObjectManager/Factory/AbstractFactory.php中调用
我正在尝试覆盖:Magento\SalesRule\Model\ResourceModel\Cupon.php以删除"唯一优惠券"限制:
$this->addUniqueField(['field' => 'code', 'title' => __('Coupon with the same code')]);
from construct((方法。
我的应用程序/code/Vvendor/Module/Model/ResourceModel/Cupon.php看起来像:
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace VendorModuleModelResourceModel;
use MagentoFrameworkModelAbstractModel;
/**
* SalesRule Resource Coupon
*
* @author Magento Core Team <core@magentocommerce.com>
*/
class Coupon extends MagentoFrameworkModelResourceModelDbAbstractDb implements
MagentoSalesRuleModelSpiCouponResourceInterface
{
/**
* Constructor adds unique fields
*
* @return void
*/
protected function _construct()
{
$this->_init('salesrule_coupon', 'coupon_id');
}
}
我的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="MagentoSalesRuleModelResourceModelCoupon" type="VendorModuleModelResourceModelCoupon" />
</config>
我已经尝试过清除缓存、生成文件夹并进行setup:di:compile,但我仍然收到同样的错误。
您应该使您的重写类扩展原始类,以便依赖注入原始类的其他本机类可以识别您的重写的类。
更改
class Coupon extends MagentoFrameworkModelResourceModelDbAbstractDb implements
MagentoSalesRuleModelSpiCouponResourceInterface
进入
class Coupon extends MagentoSalesRuleModelResourceModelCoupon
但不建议使用首选项,您可以尝试找到更好的方法。