Magento: 2 "Переданный аргумент должен быть экземпляром AuthorizerobinFactory"
У меня есть два модуля, такие как "authorizenetcim" и "authorizerobin".
В файле модели "authorizenetcim" я хочу получить коллекцию модуля "Authorizerobin".
Итак, мой конструктор для "authorizenetcim" (/model/Gateway.php
):
public function __construct(
\ParadoxLabs\TokenBase\Helper\Data $helper,
\ParadoxLabs\TokenBase\Model\Gateway\Xml $xml,
\ParadoxLabs\TokenBase\Model\Gateway\ResponseFactory $responseFactory,
\Magento\Framework\HTTP\ZendClientFactory $httpClientFactory,
\Magento\Framework\Module\Dir $moduleDir,
\Magento\Framework\Registry $registry,
/*Injecting other module's model factory */
\Neo\Authorizerobin\Model\AuthorizerobinFactory $authorizeRobinFactory,
/*Injection done*/
array $data = []
) {
$this->moduleDir = $moduleDir;
$this->registry = $registry;
$this->authorizeRobinFactory = $authorizeRobinFactory;
parent::__construct(
$helper,
$xml,
$responseFactory,
$httpClientFactory,
$data
);
}
Но я получаю следующую ошибку для своего конструктора:
<b>Fatal error</b>: Uncaught TypeError: Argument 7 passed to ParadoxLabs\Authnetcim\Model\Gateway::__construct
() must be an instance of Neo\Authorizerobin\Model\AuthorizerobinFactory, array given, called in /var
/www/html/magento2/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php on line 93 and
defined in /var/www/html/magento2/app/code/ParadoxLabs/Authnetcim/Model/Gateway.php:182
Stack trace:
#0 /var/www/html/magento2/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php(93): ParadoxLabs
\Authnetcim\Model\Gateway->__construct(Object(ParadoxLabs\TokenBase\Helper\Data), Object(ParadoxLabs
\TokenBase\Model\Gateway\Xml), Object(ParadoxLabs\TokenBase\Model\Gateway\ResponseFactory), Object(Magento
\Framework\HTTP\ZendClientFactory), Object(Magento\Framework\Module\Dir), Object(Magento\Framework\Registry
), Array)
#1 /var/www/html/magento2/vendor/magento/framework/ObjectManager/Factory/Compiled.php(88): Magento\Framework
\ObjectManager\Factory\AbstractFactory->createObject('ParadoxLabs\\Aut...', Array)
#2 /var/ in <b>/var/www/html/magento2/app/code/ParadoxLabs/Authnetcim/Model/Gateway.php</b> on line
<b>182</b><br />
{"messages":{"error":[{"code":500,"message":"Server internal error. See details in report api\/308753050106"
}]}}
2
Author: Siarhey Uchukhlebau, 2017-04-07
1 answers
Попробуйте удалить старые сгенерированные файлы с помощью команды rm -rf var/generation/*
(rm -rf generated/*
для Magento>=2.2) из корневого каталога magento, потому что magento предварительно генерирует все файлы классов с их конструкторами. Сгенерированные классы расширяют исходные классы и используются magento для вызова плагинов.
10
Author: Siarhey Uchukhlebau, 2018-02-07 10:48:46