0

I have a Controller that contains the following:

...

use Magento\Backend\App\Action;
use Magento\TestFramework\ErrorLog\Logger;
use Magento\MediaStorage\Model\File\UploaderFactory;
use MyNamespace\Slider\Model\SliderImage;

class Save extends \Magento\Backend\App\Action
{

    /** @var UploaderFactory */
    protected $uploaderFactory;

    /** @var SliderImage */
    protected $imageModel;

    public function __construct(
        Action\Context $context,
        UploaderFactory $uploaderFactory,
        SliderImage $imageModel
    )
    {
        parent::__construct($context);
        $this->uploaderFactory = $uploaderFactory;
        $this->imageModel = $imageModel;
    } 

    ...
}

I am using this to save a form in the admin. It was working properly without the UploaderFactory and SliderImage in the __contruct.

I am now trying to add an Image field to the form. I have added the dependencies, UploaderFactory and SliderImage and now get the error:

Uncaught TypeError: Argument 2 passed to MyNamespace\Slider\Controller\Adminhtml\Image\Save::__construct() must be an instance of Magento\MediaStorage\Model\File\UploaderFactory, none given, called in /var/www/html/generated/code/MyNamespace/Slider/Controller/Adminhtml/Image/Save/Interceptor.php on line 14 and defined in /var/www/html/app/code/MyNamespace/Slider/Controller/Adminhtml/Image/Save.php:19 Stack trace: #0 /var/www/html/generated/code/MyNamespace/Slider/Controller/Adminhtml/Image/Save/Interceptor.php(14): MyNamespace\Slider\Controller\Adminhtml\Image\Save->__construct(Object(Magento\Backend\App\Action\Context)) #1 /var/www/html/lib/internal/Magento/Framework/ObjectManager/Factory/AbstractFactory.php(111): MyNamespace\Slider\Controller\Adminhtml\Image\Save\Interceptor->__construct(Object(Magento\Backend\App\Action\Context)) #2 /var/www/html/lib/internal/Magento/Framework/ObjectManager/Factory/Dynamic/Developer.php(66): Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject('MyNamespace\Slider...', Array)

2 Answers 2

2

If you are using Magento 2.1.9 or less than clear var/generation, var/cache directory and if you are 2.2.0 or greater than remove generated/code and generated/metadata folder.

Thanks

1
  • I was looking for var/generated for quite some time. Didn't realize 2.2.0 moved the location. I ran bin/magento setup:di:compile and it fixed my issue. But now I know where these folders are so thanks :) Commented Nov 21, 2017 at 6:22
1

Clear var/generation folder and refresh, the error will be gone.

1
  • 1
    From Magento 2.2, generation folder is under root generated Commented Nov 21, 2017 at 4:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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