0

I try to add a new product in a afterSave plugin for Magento\Quote\Api\CartItemRepositoryInterface, but I get:

Type Error occurred when creating object: Company\Quote\Plugin\RalSpecialColorPriceSurcharge, Argument 3 passed to Company\Quote\Plugin\RalSpecialColorPriceSurcharge::__construct() must be an instance of Magento\Catalog\Model\ProductFactory, instance of Magento\Framework\App\Config given, called

app\code\Company\Quote\etc\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">
    <type name="Magento\Quote\Api\CartItemRepositoryInterface">
        <plugin name="company_quote_ral_specialcolor_price_surcharge" 
                type="Company\Quote\Plugin\RalSpecialColorPriceSurcharge"
                sortOrder="10"/>
    </type>
</config>

app\code\Company\Quote\Plugin\RalSpecialColorPriceSurcharge.php

<?php

namespace Company\Quote\Plugin;

use \Magento\Catalog\Model\ProductFactory;

class RalSpecialColorPriceSurcharge
{
    /**
     * @var Company\Quote\Model\Config\Settings
     */
    private $settings;

    public function __construct(
        \Magento\Catalog\Model\ProductFactory $productFactory,
    ) {
        $this->productFactory = $productFactory;
    }

   ...
2
  • What is your plugin method, show that? – Sohel Rana Nov 5 '20 at 14:35
  • It is not relevant, it breaks in the constructor already, I am not even using the productFactory in the plugin method yet. If I remove it from the constructor then the code works again. – Black Nov 5 '20 at 14:41
0

I figured it out. The problem was, that I executed bin/magento setup:di:compile earlier, which means that the code is getting compiled into the static files and loaded from there.

So if you call it once, then you always have to call it again after making changes to the constructor.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.