问题描述
debug.log中的错误消息:
a = lower1.count("a") + lower2.count("a")
print(a)
我正在尝试覆盖:Magento \ SalesRule \ Model \ ResourceModel \ Coupon.PHP以删除“唯一优惠券”限制:
[2020-11-10 07:57:17] main.CRITICAL: Type Error occurred when creating object: Magento\SalesRule\Model\ResourceModel\Rule,Argument 3 passed to Magento\SalesRule\Model\ResourceModel\Rule::__construct() must be an instance of Magento\SalesRule\Model\ResourceModel\Coupon,instance of RM\SameCouponMultiplediscounts\Model\ResourceModel\Coupon given,called in /home/rehan/lab/testrm/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.PHP on line 116 [] []
来自construct()方法。
我的应用程序/代码/供应商/模块/模型/ResourceModel/Coupon.PHP如下:
$this->addUniqueField(['field' => 'code','title' => __('Coupon with the same code')]);
我的di.xml文件如下:
<?PHP
/**
* copyright © Magento,Inc. All rights reserved.
* See copYING.txt for license details.
*/
namespace vendor\Module\Model\ResourceModel;
use Magento\Framework\Model\AbstractModel;
/**
* SalesRule Resource Coupon
*
* @author Magento Core Team <core@magentocommerce.com>
*/
class Coupon extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb implements
\Magento\SalesRule\Model\Spi\CouponResourceInterface
{
/**
* Constructor adds unique fields
*
* @return void
*/
protected function _construct()
{
$this->_init('salesrule_coupon','coupon_id');
}
}
我尝试清除缓存,生成文件夹并做了setup:di:compile,但是我仍然收到相同的错误。
当我被卡住时,请在这里帮助我。
解决方法
您应该使覆盖的类扩展原始的类,以便依赖项注入原始类的其他本机类可以识别您的覆盖的原始类。
改变
class Coupon extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb implements
\Magento\SalesRule\Model\Spi\CouponResourceInterface
进入
class Coupon extends \Magento\SalesRule\Model\ResourceModel\Coupon
但是不建议使用首选项,您可以尝试找到更好的方法。