Tengo una acción de controlador en la que me gustaría inyectar el repositorio de productos
namespace Nosto\Tagging\Controller\Export;
use Magento\Catalog\Api\ProductRepositoryInterface;
use Magento\Store\Model\StoreManagerInterface;
use Magento\Backend\App\Action;
use Magento\Framework\App\Action\Context;
class Test extends Action
{
private $_productRepository;
public function __construct(
Context $context,
StoreManagerInterface $storeManager,
ProductRepositoryInterface $productRepository
) {
parent::__construct($context);
$this->_storeManager = $storeManager;
$this->_productRepository = $productRepository;
}
No importa en qué orden coloque mis argumentos de constructor, la inyección de dependencia de Magento siempre inyecta una clase no válida para el productRepository
argumento que lleva a PHP a lanzar y error de argumento. El storeManager
getd inyectado muy bien. Limpiar los cachés no ha ayudado.
Aquí está la excepción lanzada:
Recoverable Error: Argument 3 passed to Nosto\Tagging\Controller\Export\Test::__construct() must implement interface Magento\Catalog\Api\ProductRepositoryInterface, instance of Nosto\Tagging\Helper\Account given.
Los nombres de clase y las posiciones de argumento en el mensaje de error cambian, pero la definición de error es siempre la misma. Eliminar el ProductRepositoryInterface
del constructor hace que todo vuelva a estar bien.